|
@@ -13,17 +13,17 @@ import (
|
|
|
|
|
|
var (
|
|
|
err error
|
|
|
- level zapcore.Level
|
|
|
+ level zapcore.Level
|
|
|
writer zapcore.WriteSyncer
|
|
|
)
|
|
|
|
|
|
func init() {
|
|
|
- if ok, _ := utils.PathExists(global.GVA_CONFIG.Zap.Director); !ok { // 判断是否有logs文件夹
|
|
|
- fmt.Println("create logs directory") // directory not exist
|
|
|
+ if ok, _ := utils.PathExists(global.GVA_CONFIG.Zap.Director); !ok { // 判断是否有Director文件夹
|
|
|
+ fmt.Printf("create %v directory\n", global.GVA_CONFIG.Zap.Director)
|
|
|
_ = os.Mkdir(global.GVA_CONFIG.Zap.Director, os.ModePerm)
|
|
|
}
|
|
|
|
|
|
- switch global.GVA_CONFIG.Zap.Level {// 初始化配置文件的Level
|
|
|
+ switch global.GVA_CONFIG.Zap.Level { // 初始化配置文件的Level
|
|
|
case "debug":
|
|
|
level = zap.DebugLevel
|
|
|
case "info":
|
|
@@ -32,6 +32,12 @@ func init() {
|
|
|
level = zap.WarnLevel
|
|
|
case "error":
|
|
|
level = zap.ErrorLevel
|
|
|
+ case "dpanic":
|
|
|
+ level = zap.DPanicLevel
|
|
|
+ case "panic":
|
|
|
+ level = zap.PanicLevel
|
|
|
+ case "fatal":
|
|
|
+ level = zap.FatalLevel
|
|
|
default:
|
|
|
level = zap.InfoLevel
|
|
|
}
|
|
@@ -43,23 +49,19 @@ func init() {
|
|
|
}
|
|
|
|
|
|
if level == zap.DebugLevel || level == zap.ErrorLevel {
|
|
|
- global.GVA_ZAP = zap.New(getEncoderCore(), zap.AddStacktrace(level))
|
|
|
- if global.GVA_CONFIG.Zap.ShowLine {
|
|
|
- global.GVA_ZAP.WithOptions(zap.AddCaller())
|
|
|
- }
|
|
|
- return
|
|
|
+ global.GVA_LOG = zap.New(getEncoderCore(), zap.AddStacktrace(level))
|
|
|
+ } else {
|
|
|
+ global.GVA_LOG = zap.New(getEncoderCore())
|
|
|
}
|
|
|
- global.GVA_ZAP = zap.New(getEncoderCore())
|
|
|
if global.GVA_CONFIG.Zap.ShowLine {
|
|
|
- global.GVA_ZAP.WithOptions(zap.AddCaller())
|
|
|
+ global.GVA_LOG.WithOptions(zap.AddCaller())
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
// getWriteSyncer zap logger中加入file-rotatelogs
|
|
|
func getWriteSyncer() (zapcore.WriteSyncer, error) {
|
|
|
fileWriter, err := zaprotatelogs.New(
|
|
|
- global.GVA_CONFIG.Zap.Director+string(os.PathSeparator)+"%Y-%m-%d-%H-%M.log",
|
|
|
+ global.GVA_CONFIG.Zap.Director+string(os.PathSeparator)+"%Y-%m-%d.log",
|
|
|
zaprotatelogs.WithLinkName(global.GVA_CONFIG.Zap.LinkName),
|
|
|
zaprotatelogs.WithMaxAge(7*24*time.Hour),
|
|
|
zaprotatelogs.WithRotationTime(24*time.Hour),
|
|
@@ -78,18 +80,41 @@ func getEncoderConfig() (config zapcore.EncoderConfig) {
|
|
|
TimeKey: "time",
|
|
|
NameKey: "logger",
|
|
|
CallerKey: "caller",
|
|
|
- StacktraceKey: "stacktrace",
|
|
|
+ StacktraceKey: global.GVA_CONFIG.Zap.StacktraceKey,
|
|
|
LineEnding: zapcore.DefaultLineEnding,
|
|
|
- EncodeLevel: zapcore.CapitalColorLevelEncoder,
|
|
|
+ EncodeLevel: zapcore.CapitalLevelEncoder,
|
|
|
EncodeTime: CustomTimeEncoder,
|
|
|
EncodeDuration: zapcore.SecondsDurationEncoder,
|
|
|
EncodeCaller: zapcore.FullCallerEncoder,
|
|
|
}
|
|
|
+ switch {
|
|
|
+ case global.GVA_CONFIG.Zap.EncodeLevel == "LowercaseLevelEncoder" && global.GVA_CONFIG.Zap.Format == "console" : // console小写编码器
|
|
|
+ config.EncodeLevel = zapcore.LowercaseLevelEncoder
|
|
|
+ case global.GVA_CONFIG.Zap.EncodeLevel == "LowercaseLevelEncoder" && global.GVA_CONFIG.Zap.Format == "json" : // json小写编码器
|
|
|
+ config.EncodeLevel = zapcore.LowercaseLevelEncoder
|
|
|
+ case global.GVA_CONFIG.Zap.EncodeLevel == "LowercaseColorLevelEncoder" && global.GVA_CONFIG.Zap.Format == "console": // console小写编码器带颜色
|
|
|
+ config.EncodeLevel = zapcore.LowercaseColorLevelEncoder
|
|
|
+ case global.GVA_CONFIG.Zap.EncodeLevel == "LowercaseColorLevelEncoder" && global.GVA_CONFIG.Zap.Format == "json": // json小写编码器带颜色
|
|
|
+ config.EncodeLevel = zapcore.LowercaseColorLevelEncoder
|
|
|
+ case global.GVA_CONFIG.Zap.EncodeLevel == "CapitalLevelEncoder" && global.GVA_CONFIG.Zap.Format == "console": // console大写编码器
|
|
|
+ config.EncodeLevel = zapcore.CapitalLevelEncoder
|
|
|
+ case global.GVA_CONFIG.Zap.EncodeLevel == "CapitalLevelEncoder" && global.GVA_CONFIG.Zap.Format == "json": // json大写编码器
|
|
|
+ config.EncodeLevel = zapcore.CapitalLevelEncoder
|
|
|
+ case global.GVA_CONFIG.Zap.EncodeLevel == "CapitalColorLevelEncoder" && global.GVA_CONFIG.Zap.Format == "console": // console 大写编码器带颜色
|
|
|
+ config.EncodeLevel = zapcore.CapitalColorLevelEncoder
|
|
|
+ case global.GVA_CONFIG.Zap.EncodeLevel == "CapitalColorLevelEncoder" && global.GVA_CONFIG.Zap.Format == "json": // json 大写编码器带颜色
|
|
|
+ config.EncodeLevel = zapcore.CapitalColorLevelEncoder
|
|
|
+ default:
|
|
|
+ config.EncodeLevel = zapcore.LowercaseLevelEncoder
|
|
|
+ }
|
|
|
return config
|
|
|
}
|
|
|
|
|
|
// getEncoder 获取zapcore.Encoder
|
|
|
func getEncoder() zapcore.Encoder {
|
|
|
+ if global.GVA_CONFIG.Zap.Format == "json" {
|
|
|
+ return zapcore.NewJSONEncoder(getEncoderConfig())
|
|
|
+ }
|
|
|
return zapcore.NewConsoleEncoder(getEncoderConfig())
|
|
|
}
|
|
|
|
|
@@ -100,5 +125,5 @@ func getEncoderCore() (core zapcore.Core) {
|
|
|
|
|
|
// 自定义日志输出时间格式
|
|
|
func CustomTimeEncoder(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
|
|
|
- enc.AppendString(t.Format(global.GVA_CONFIG.Zap.Prefix+"2006/01/02 - 15:04:05.000"))
|
|
|
+ enc.AppendString(t.Format(global.GVA_CONFIG.Zap.Prefix + "2006/01/02 - 15:04:05.000"))
|
|
|
}
|