From 15f6626282780e01797644593d471fa9b7829453 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 17 Apr 2023 19:13:34 +0800 Subject: [PATCH 01/22] zap --- pkg/common/log/zap.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pkg/common/log/zap.go b/pkg/common/log/zap.go index fa4a8c6d9..f2dc04091 100644 --- a/pkg/common/log/zap.go +++ b/pkg/common/log/zap.go @@ -2,6 +2,7 @@ package log import ( "context" + "errors" "os" "path/filepath" "time" @@ -68,6 +69,8 @@ func NewZapLogger(logLevel int, isStdout bool, isJson bool) (*ZapLogger, error) } if isJson { zapConfig.Encoding = "json" + } else { + zapConfig.Encoding = "console" } if isStdout { zapConfig.OutputPaths = append(zapConfig.OutputPaths, "stdout", "stderr") @@ -101,11 +104,14 @@ func (l *ZapLogger) cores(logLevel int, isStdout bool) (zap.Option, error) { return nil, err } var cores []zapcore.Core - if config.Config.Log.StorageLocation != "" { + if config.Config.Log.StorageLocation != "" && !isStdout { cores = []zapcore.Core{ zapcore.NewCore(fileEncoder, writer, zap.NewAtomicLevelAt(logLevelMap[logLevel])), } } + if config.Config.Log.StorageLocation == "" && !isStdout { + return nil, errors.New("log storage location is empty and not stdout") + } if isStdout { cores = append(cores, zapcore.NewCore(fileEncoder, zapcore.Lock(os.Stdout), zap.NewAtomicLevelAt(logLevelMap[logLevel]))) } From 987e6b10045aba219e60bba28c85fa08b01c6c98 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 17 Apr 2023 19:18:40 +0800 Subject: [PATCH 02/22] zap --- pkg/common/log/zap.go | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/pkg/common/log/zap.go b/pkg/common/log/zap.go index f2dc04091..17fabf3b8 100644 --- a/pkg/common/log/zap.go +++ b/pkg/common/log/zap.go @@ -67,16 +67,16 @@ func NewZapLogger(logLevel int, isStdout bool, isJson bool) (*ZapLogger, error) InitialFields: map[string]interface{}{"PID": os.Getegid()}, DisableStacktrace: true, } - if isJson { - zapConfig.Encoding = "json" - } else { - zapConfig.Encoding = "console" - } - if isStdout { - zapConfig.OutputPaths = append(zapConfig.OutputPaths, "stdout", "stderr") - } + // if isJson { + // zapConfig.Encoding = "json" + // } else { + // zapConfig.Encoding = "console" + // } + // if isStdout { + // zapConfig.OutputPaths = append(zapConfig.OutputPaths, "stdout", "stderr") + // } zl := &ZapLogger{} - opts, err := zl.cores(logLevel, isStdout) + opts, err := zl.cores(logLevel, isStdout, isJson) if err != nil { return nil, err } @@ -88,7 +88,7 @@ func NewZapLogger(logLevel int, isStdout bool, isJson bool) (*ZapLogger, error) return zl, nil } -func (l *ZapLogger) cores(logLevel int, isStdout bool) (zap.Option, error) { +func (l *ZapLogger) cores(logLevel int, isStdout bool, isJson bool) (zap.Option, error) { c := zap.NewProductionEncoderConfig() c.EncodeTime = zapcore.ISO8601TimeEncoder c.EncodeDuration = zapcore.SecondsDurationEncoder @@ -97,7 +97,12 @@ func (l *ZapLogger) cores(logLevel int, isStdout bool) (zap.Option, error) { c.LevelKey = "level" c.TimeKey = "time" c.CallerKey = "caller" - fileEncoder := zapcore.NewJSONEncoder(c) + var fileEncoder zapcore.Encoder + if isJson { + fileEncoder = zapcore.NewJSONEncoder(c) + } else { + fileEncoder = zapcore.NewConsoleEncoder(c) + } fileEncoder.AddInt("PID", os.Getpid()) writer, err := l.getWriter() if err != nil { From 1a56deeb21a358f2ab9aee56c6c2885a1f14309f Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 17 Apr 2023 19:49:35 +0800 Subject: [PATCH 03/22] zap --- pkg/common/log/zap.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/common/log/zap.go b/pkg/common/log/zap.go index 17fabf3b8..82efbd91c 100644 --- a/pkg/common/log/zap.go +++ b/pkg/common/log/zap.go @@ -67,11 +67,11 @@ func NewZapLogger(logLevel int, isStdout bool, isJson bool) (*ZapLogger, error) InitialFields: map[string]interface{}{"PID": os.Getegid()}, DisableStacktrace: true, } - // if isJson { - // zapConfig.Encoding = "json" - // } else { - // zapConfig.Encoding = "console" - // } + if isJson { + zapConfig.Encoding = "json" + } else { + zapConfig.Encoding = "console" + } // if isStdout { // zapConfig.OutputPaths = append(zapConfig.OutputPaths, "stdout", "stderr") // } From 0d3a1ba6f6f4c6d5375be5884549af777a1dcd36 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 17 Apr 2023 19:58:15 +0800 Subject: [PATCH 04/22] zap --- pkg/common/log/zap.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/common/log/zap.go b/pkg/common/log/zap.go index 82efbd91c..b5f3567ae 100644 --- a/pkg/common/log/zap.go +++ b/pkg/common/log/zap.go @@ -92,15 +92,17 @@ func (l *ZapLogger) cores(logLevel int, isStdout bool, isJson bool) (zap.Option, c := zap.NewProductionEncoderConfig() c.EncodeTime = zapcore.ISO8601TimeEncoder c.EncodeDuration = zapcore.SecondsDurationEncoder - c.EncodeLevel = zapcore.CapitalLevelEncoder + c.MessageKey = "msg" c.LevelKey = "level" c.TimeKey = "time" c.CallerKey = "caller" var fileEncoder zapcore.Encoder if isJson { + c.EncodeLevel = zapcore.CapitalLevelEncoder fileEncoder = zapcore.NewJSONEncoder(c) } else { + c.EncodeLevel = zapcore.CapitalColorLevelEncoder fileEncoder = zapcore.NewConsoleEncoder(c) } fileEncoder.AddInt("PID", os.Getpid()) From c81d958b7895d5c464767a23a00e7ddc88c81f2f Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 17 Apr 2023 20:09:58 +0800 Subject: [PATCH 05/22] log --- pkg/common/cmd/root.go | 2 +- pkg/common/log/zap.go | 23 +++++++++++------------ 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/pkg/common/cmd/root.go b/pkg/common/cmd/root.go index 4fb0b2d97..960b6f55c 100644 --- a/pkg/common/cmd/root.go +++ b/pkg/common/cmd/root.go @@ -26,7 +26,7 @@ func NewRootCmd(name string) (rootCmd *RootCmd) { if err := rootCmd.getConfFromCmdAndInit(cmd); err != nil { return err } - return log.InitFromConfig(name, config.Config.Log.RemainLogLevel, config.Config.Log.IsStdout, config.Config.Log.IsJson) + return log.InitFromConfig(name, config.Config.Log.RemainLogLevel, config.Config.Log.IsStdout, config.Config.Log.IsJson, config.Config.Log.StorageLocation, config.Config.Log.RemainRotationCount) }, } rootCmd.Command = c diff --git a/pkg/common/log/zap.go b/pkg/common/log/zap.go index b5f3567ae..37ee7b217 100644 --- a/pkg/common/log/zap.go +++ b/pkg/common/log/zap.go @@ -31,8 +31,8 @@ var ( ) // InitFromConfig initializes a Zap-based logger -func InitFromConfig(name string, logLevel int, isStdout bool, isJson bool) error { - l, err := NewZapLogger(logLevel, isStdout, isJson) +func InitFromConfig(name string, logLevel int, isStdout bool, isJson bool, logLocation string, rotateCount uint) error { + l, err := NewZapLogger(logLevel, isStdout, isJson, logLocation, rotateCount) if err != nil { return err } @@ -60,7 +60,7 @@ type ZapLogger struct { zap *zap.SugaredLogger } -func NewZapLogger(logLevel int, isStdout bool, isJson bool) (*ZapLogger, error) { +func NewZapLogger(logLevel int, isStdout bool, isJson bool, logLocation string, rotateCount uint) (*ZapLogger, error) { zapConfig := zap.Config{ Level: zap.NewAtomicLevelAt(logLevelMap[logLevel]), EncoderConfig: zap.NewProductionEncoderConfig(), @@ -76,7 +76,7 @@ func NewZapLogger(logLevel int, isStdout bool, isJson bool) (*ZapLogger, error) // zapConfig.OutputPaths = append(zapConfig.OutputPaths, "stdout", "stderr") // } zl := &ZapLogger{} - opts, err := zl.cores(logLevel, isStdout, isJson) + opts, err := zl.cores(logLevel, isStdout, isJson, logLocation, rotateCount) if err != nil { return nil, err } @@ -88,11 +88,10 @@ func NewZapLogger(logLevel int, isStdout bool, isJson bool) (*ZapLogger, error) return zl, nil } -func (l *ZapLogger) cores(logLevel int, isStdout bool, isJson bool) (zap.Option, error) { +func (l *ZapLogger) cores(logLevel int, isStdout bool, isJson bool, logLocation string, rotateCount uint) (zap.Option, error) { c := zap.NewProductionEncoderConfig() c.EncodeTime = zapcore.ISO8601TimeEncoder c.EncodeDuration = zapcore.SecondsDurationEncoder - c.MessageKey = "msg" c.LevelKey = "level" c.TimeKey = "time" @@ -106,17 +105,17 @@ func (l *ZapLogger) cores(logLevel int, isStdout bool, isJson bool) (zap.Option, fileEncoder = zapcore.NewConsoleEncoder(c) } fileEncoder.AddInt("PID", os.Getpid()) - writer, err := l.getWriter() + writer, err := l.getWriter(logLocation, rotateCount) if err != nil { return nil, err } var cores []zapcore.Core - if config.Config.Log.StorageLocation != "" && !isStdout { + if logLocation != "" && !isStdout { cores = []zapcore.Core{ zapcore.NewCore(fileEncoder, writer, zap.NewAtomicLevelAt(logLevelMap[logLevel])), } } - if config.Config.Log.StorageLocation == "" && !isStdout { + if logLocation == "" && !isStdout { return nil, errors.New("log storage location is empty and not stdout") } if isStdout { @@ -127,9 +126,9 @@ func (l *ZapLogger) cores(logLevel int, isStdout bool, isJson bool) (zap.Option, }), nil } -func (l *ZapLogger) getWriter() (zapcore.WriteSyncer, error) { - logf, err := rotatelogs.New(config.Config.Log.StorageLocation+sp+"OpenIM.log.all"+".%Y-%m-%d", - rotatelogs.WithRotationCount(config.Config.Log.RemainRotationCount), +func (l *ZapLogger) getWriter(logLocation string, rorateCount uint) (zapcore.WriteSyncer, error) { + logf, err := rotatelogs.New(logLocation+sp+"OpenIM.log.all"+".%Y-%m-%d", + rotatelogs.WithRotationCount(rorateCount), rotatelogs.WithRotationTime(time.Duration(config.Config.Log.RotationTime)*time.Hour), ) if err != nil { From 111fbdcccf35a68dd7310b33cd0ec846891a98e3 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 17 Apr 2023 20:12:26 +0800 Subject: [PATCH 06/22] caller --- pkg/common/log/zap.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pkg/common/log/zap.go b/pkg/common/log/zap.go index 37ee7b217..167573402 100644 --- a/pkg/common/log/zap.go +++ b/pkg/common/log/zap.go @@ -102,6 +102,7 @@ func (l *ZapLogger) cores(logLevel int, isStdout bool, isJson bool, logLocation fileEncoder = zapcore.NewJSONEncoder(c) } else { c.EncodeLevel = zapcore.CapitalColorLevelEncoder + c.EncodeCaller = customCallerEncoder fileEncoder = zapcore.NewConsoleEncoder(c) } fileEncoder.AddInt("PID", os.Getpid()) @@ -126,6 +127,14 @@ func (l *ZapLogger) cores(logLevel int, isStdout bool, isJson bool, logLocation }), nil } +func customCallerEncoder(caller zapcore.EntryCaller, enc zapcore.PrimitiveArrayEncoder) { + enc.AppendString("\x1b[32m") + enc.AppendString(caller.Function) + enc.AppendString(":") + enc.AppendInt(int64(caller.Line)) + enc.AppendString("\x1b[0m") +} + func (l *ZapLogger) getWriter(logLocation string, rorateCount uint) (zapcore.WriteSyncer, error) { logf, err := rotatelogs.New(logLocation+sp+"OpenIM.log.all"+".%Y-%m-%d", rotatelogs.WithRotationCount(rorateCount), From 3fa96b0700c544e97a25fc023be04949082ee115 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 17 Apr 2023 20:12:52 +0800 Subject: [PATCH 07/22] caller --- pkg/common/log/zap.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/common/log/zap.go b/pkg/common/log/zap.go index 167573402..79fe4ac44 100644 --- a/pkg/common/log/zap.go +++ b/pkg/common/log/zap.go @@ -131,7 +131,7 @@ func customCallerEncoder(caller zapcore.EntryCaller, enc zapcore.PrimitiveArrayE enc.AppendString("\x1b[32m") enc.AppendString(caller.Function) enc.AppendString(":") - enc.AppendInt(int64(caller.Line)) + enc.AppendInt(caller.Line) enc.AppendString("\x1b[0m") } From bde01538a05cd9fdb68883903753b2ff88cc1a38 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 17 Apr 2023 20:18:00 +0800 Subject: [PATCH 08/22] zap --- pkg/common/log/zap.go | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/pkg/common/log/zap.go b/pkg/common/log/zap.go index 79fe4ac44..c11df4fae 100644 --- a/pkg/common/log/zap.go +++ b/pkg/common/log/zap.go @@ -102,10 +102,10 @@ func (l *ZapLogger) cores(logLevel int, isStdout bool, isJson bool, logLocation fileEncoder = zapcore.NewJSONEncoder(c) } else { c.EncodeLevel = zapcore.CapitalColorLevelEncoder - c.EncodeCaller = customCallerEncoder fileEncoder = zapcore.NewConsoleEncoder(c) } fileEncoder.AddInt("PID", os.Getpid()) + fileEncoder.AddString("operationID", "") writer, err := l.getWriter(logLocation, rotateCount) if err != nil { return nil, err @@ -127,14 +127,6 @@ func (l *ZapLogger) cores(logLevel int, isStdout bool, isJson bool, logLocation }), nil } -func customCallerEncoder(caller zapcore.EntryCaller, enc zapcore.PrimitiveArrayEncoder) { - enc.AppendString("\x1b[32m") - enc.AppendString(caller.Function) - enc.AppendString(":") - enc.AppendInt(caller.Line) - enc.AppendString("\x1b[0m") -} - func (l *ZapLogger) getWriter(logLocation string, rorateCount uint) (zapcore.WriteSyncer, error) { logf, err := rotatelogs.New(logLocation+sp+"OpenIM.log.all"+".%Y-%m-%d", rotatelogs.WithRotationCount(rorateCount), From ede20976787a9c984c997112c10bd56196a1999c Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 17 Apr 2023 20:26:24 +0800 Subject: [PATCH 09/22] caller --- pkg/common/log/zap.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/pkg/common/log/zap.go b/pkg/common/log/zap.go index c11df4fae..184055c74 100644 --- a/pkg/common/log/zap.go +++ b/pkg/common/log/zap.go @@ -62,9 +62,9 @@ type ZapLogger struct { func NewZapLogger(logLevel int, isStdout bool, isJson bool, logLocation string, rotateCount uint) (*ZapLogger, error) { zapConfig := zap.Config{ - Level: zap.NewAtomicLevelAt(logLevelMap[logLevel]), - EncoderConfig: zap.NewProductionEncoderConfig(), - InitialFields: map[string]interface{}{"PID": os.Getegid()}, + Level: zap.NewAtomicLevelAt(logLevelMap[logLevel]), + EncoderConfig: zap.NewProductionEncoderConfig(), + // InitialFields: map[string]interface{}{"PID": os.Getegid()}, DisableStacktrace: true, } if isJson { @@ -103,9 +103,13 @@ func (l *ZapLogger) cores(logLevel int, isStdout bool, isJson bool, logLocation } else { c.EncodeLevel = zapcore.CapitalColorLevelEncoder fileEncoder = zapcore.NewConsoleEncoder(c) + customCallerEncoder := func(caller zapcore.EntryCaller, enc zapcore.PrimitiveArrayEncoder) { + // enc.AppendString("[" + l.traceId + "]") + enc.AppendString("[" + caller.TrimmedPath() + "]") + } + c.EncodeCaller = customCallerEncoder } fileEncoder.AddInt("PID", os.Getpid()) - fileEncoder.AddString("operationID", "") writer, err := l.getWriter(logLocation, rotateCount) if err != nil { return nil, err From 1039d44284c8dcf3d6fa4c2475c46d17fa685262 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 17 Apr 2023 20:28:38 +0800 Subject: [PATCH 10/22] zap --- pkg/common/log/zap.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/common/log/zap.go b/pkg/common/log/zap.go index 184055c74..b256821f0 100644 --- a/pkg/common/log/zap.go +++ b/pkg/common/log/zap.go @@ -102,12 +102,12 @@ func (l *ZapLogger) cores(logLevel int, isStdout bool, isJson bool, logLocation fileEncoder = zapcore.NewJSONEncoder(c) } else { c.EncodeLevel = zapcore.CapitalColorLevelEncoder - fileEncoder = zapcore.NewConsoleEncoder(c) customCallerEncoder := func(caller zapcore.EntryCaller, enc zapcore.PrimitiveArrayEncoder) { // enc.AppendString("[" + l.traceId + "]") enc.AppendString("[" + caller.TrimmedPath() + "]") } c.EncodeCaller = customCallerEncoder + fileEncoder = zapcore.NewConsoleEncoder(c) } fileEncoder.AddInt("PID", os.Getpid()) writer, err := l.getWriter(logLocation, rotateCount) From cce90a109d57e593c77d9418648f2c4cb2f69f6f Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 17 Apr 2023 20:35:27 +0800 Subject: [PATCH 11/22] zap --- pkg/common/log/zap.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkg/common/log/zap.go b/pkg/common/log/zap.go index b256821f0..73d690893 100644 --- a/pkg/common/log/zap.go +++ b/pkg/common/log/zap.go @@ -103,8 +103,11 @@ func (l *ZapLogger) cores(logLevel int, isStdout bool, isJson bool, logLocation } else { c.EncodeLevel = zapcore.CapitalColorLevelEncoder customCallerEncoder := func(caller zapcore.EntryCaller, enc zapcore.PrimitiveArrayEncoder) { - // enc.AppendString("[" + l.traceId + "]") + enc.AppendString("[" + caller.Function + "]") enc.AppendString("[" + caller.TrimmedPath() + "]") + enc.AppendString("[" + caller.String() + "]") + enc.AppendString("[" + caller.File + "]") + enc.AppendString("[" + caller.FullPath() + "]") } c.EncodeCaller = customCallerEncoder fileEncoder = zapcore.NewConsoleEncoder(c) From aed85360807bc5b7420a1d3cc4a01c13ed4ecf07 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 17 Apr 2023 20:49:38 +0800 Subject: [PATCH 12/22] zap --- pkg/common/log/zap.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pkg/common/log/zap.go b/pkg/common/log/zap.go index 73d690893..6ef486a65 100644 --- a/pkg/common/log/zap.go +++ b/pkg/common/log/zap.go @@ -103,11 +103,7 @@ func (l *ZapLogger) cores(logLevel int, isStdout bool, isJson bool, logLocation } else { c.EncodeLevel = zapcore.CapitalColorLevelEncoder customCallerEncoder := func(caller zapcore.EntryCaller, enc zapcore.PrimitiveArrayEncoder) { - enc.AppendString("[" + caller.Function + "]") enc.AppendString("[" + caller.TrimmedPath() + "]") - enc.AppendString("[" + caller.String() + "]") - enc.AppendString("[" + caller.File + "]") - enc.AppendString("[" + caller.FullPath() + "]") } c.EncodeCaller = customCallerEncoder fileEncoder = zapcore.NewConsoleEncoder(c) @@ -145,6 +141,11 @@ func (l *ZapLogger) getWriter(logLocation string, rorateCount uint) (zapcore.Wri return zapcore.AddSync(logf), nil } +func (l *ZapLogger) CapitalColorLevelEncoder(level zapcore.Level, enc zapcore.PrimitiveArrayEncoder) { + zapcore.CapitalColorLevelEncoder(level, enc) + enc.AppendString("caller") +} + func (l *ZapLogger) ToZap() *zap.SugaredLogger { return l.zap } From bbcc6c212a3ec529b959d223b499c0a738ebabc5 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 17 Apr 2023 20:58:21 +0800 Subject: [PATCH 13/22] zap --- pkg/common/log/zap.go | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/pkg/common/log/zap.go b/pkg/common/log/zap.go index 6ef486a65..90aafdd78 100644 --- a/pkg/common/log/zap.go +++ b/pkg/common/log/zap.go @@ -57,7 +57,9 @@ func ZError(ctx context.Context, msg string, err error, keysAndValues ...interfa } type ZapLogger struct { - zap *zap.SugaredLogger + zap *zap.SugaredLogger + callerKey string + loggerKey string } func NewZapLogger(logLevel int, isStdout bool, isJson bool, logLocation string, rotateCount uint) (*ZapLogger, error) { @@ -95,13 +97,17 @@ func (l *ZapLogger) cores(logLevel int, isStdout bool, isJson bool, logLocation c.MessageKey = "msg" c.LevelKey = "level" c.TimeKey = "time" - c.CallerKey = "caller" + l.callerKey = "caller" + l.loggerKey = "logger" + c.CallerKey = l.callerKey + l.loggerKey = c.NameKey + var fileEncoder zapcore.Encoder if isJson { c.EncodeLevel = zapcore.CapitalLevelEncoder fileEncoder = zapcore.NewJSONEncoder(c) } else { - c.EncodeLevel = zapcore.CapitalColorLevelEncoder + c.EncodeLevel = l.CapitalColorLevelEncoder customCallerEncoder := func(caller zapcore.EntryCaller, enc zapcore.PrimitiveArrayEncoder) { enc.AppendString("[" + caller.TrimmedPath() + "]") } @@ -143,7 +149,8 @@ func (l *ZapLogger) getWriter(logLocation string, rorateCount uint) (zapcore.Wri func (l *ZapLogger) CapitalColorLevelEncoder(level zapcore.Level, enc zapcore.PrimitiveArrayEncoder) { zapcore.CapitalColorLevelEncoder(level, enc) - enc.AppendString("caller") + enc.AppendString(l.callerKey) + enc.AppendString(l.loggerKey) } func (l *ZapLogger) ToZap() *zap.SugaredLogger { From 9445f74e1aecd100e207d899520a30aa8d7d9bac Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 17 Apr 2023 21:18:05 +0800 Subject: [PATCH 14/22] color --- pkg/common/log/color.go | 50 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 pkg/common/log/color.go diff --git a/pkg/common/log/color.go b/pkg/common/log/color.go new file mode 100644 index 000000000..692563f88 --- /dev/null +++ b/pkg/common/log/color.go @@ -0,0 +1,50 @@ +package log + +import ( + "fmt" + + "go.uber.org/zap/zapcore" +) + +// Foreground colors. +const ( + Black Color = iota + 30 + Red + Green + Yellow + Blue + Magenta + Cyan + White +) + +var ( + _levelToColor = map[zapcore.Level]Color{ + zapcore.DebugLevel: Magenta, + zapcore.InfoLevel: Blue, + zapcore.WarnLevel: Yellow, + zapcore.ErrorLevel: Red, + zapcore.DPanicLevel: Red, + zapcore.PanicLevel: Red, + zapcore.FatalLevel: Red, + } + _unknownLevelColor = make(map[zapcore.Level][]string, len(_levelToColor)) + + _levelToLowercaseColorString = make(map[zapcore.Level][]string, len(_levelToColor)) + _levelToCapitalColorString = make(map[zapcore.Level][]string, len(_levelToColor)) +) + +func init() { + for level, color := range _levelToColor { + _levelToLowercaseColorString[level] = append(_levelToLowercaseColorString[level], color.Add(level.String()), color.Add("caller")) + _levelToCapitalColorString[level] = append(_levelToCapitalColorString[level], color.Add(level.CapitalString()), color.Add("caller")) + } +} + +// Color represents a text color. +type Color uint8 + +// Add adds the coloring to the given string. +func (c Color) Add(s string) string { + return fmt.Sprintf("\x1b[%dm%s\x1b[0m", uint8(c), s) +} From 5f0346be7724f32faed9ae5dc351d8d7baac4671 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 17 Apr 2023 21:18:11 +0800 Subject: [PATCH 15/22] zap --- pkg/common/log/zap.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/pkg/common/log/zap.go b/pkg/common/log/zap.go index 90aafdd78..477fb03b3 100644 --- a/pkg/common/log/zap.go +++ b/pkg/common/log/zap.go @@ -92,7 +92,7 @@ func NewZapLogger(logLevel int, isStdout bool, isJson bool, logLocation string, func (l *ZapLogger) cores(logLevel int, isStdout bool, isJson bool, logLocation string, rotateCount uint) (zap.Option, error) { c := zap.NewProductionEncoderConfig() - c.EncodeTime = zapcore.ISO8601TimeEncoder + c.EncodeTime = zapcore.RFC3339TimeEncoder c.EncodeDuration = zapcore.SecondsDurationEncoder c.MessageKey = "msg" c.LevelKey = "level" @@ -148,9 +148,13 @@ func (l *ZapLogger) getWriter(logLocation string, rorateCount uint) (zapcore.Wri } func (l *ZapLogger) CapitalColorLevelEncoder(level zapcore.Level, enc zapcore.PrimitiveArrayEncoder) { - zapcore.CapitalColorLevelEncoder(level, enc) - enc.AppendString(l.callerKey) - enc.AppendString(l.loggerKey) + ls, ok := _levelToCapitalColorString[level] + if !ok { + ls = _levelToCapitalColorString[zapcore.ErrorLevel] + } + for _, s := range ls { + enc.AppendString(s) + } } func (l *ZapLogger) ToZap() *zap.SugaredLogger { From 22633cbe77a4d177696660d9f094c16f7e3634c1 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 17 Apr 2023 21:22:54 +0800 Subject: [PATCH 16/22] color --- pkg/common/log/color.go | 4 ++-- pkg/common/log/zap.go | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/common/log/color.go b/pkg/common/log/color.go index 692563f88..774f11133 100644 --- a/pkg/common/log/color.go +++ b/pkg/common/log/color.go @@ -36,8 +36,8 @@ var ( func init() { for level, color := range _levelToColor { - _levelToLowercaseColorString[level] = append(_levelToLowercaseColorString[level], color.Add(level.String()), color.Add("caller")) - _levelToCapitalColorString[level] = append(_levelToCapitalColorString[level], color.Add(level.CapitalString()), color.Add("caller")) + _levelToLowercaseColorString[level] = append(_levelToLowercaseColorString[level], color.Add(level.String())) + _levelToCapitalColorString[level] = append(_levelToCapitalColorString[level], color.Add(level.CapitalString())) } } diff --git a/pkg/common/log/zap.go b/pkg/common/log/zap.go index 477fb03b3..08bcd7de4 100644 --- a/pkg/common/log/zap.go +++ b/pkg/common/log/zap.go @@ -150,7 +150,7 @@ func (l *ZapLogger) getWriter(logLocation string, rorateCount uint) (zapcore.Wri func (l *ZapLogger) CapitalColorLevelEncoder(level zapcore.Level, enc zapcore.PrimitiveArrayEncoder) { ls, ok := _levelToCapitalColorString[level] if !ok { - ls = _levelToCapitalColorString[zapcore.ErrorLevel] + ls = _unknownLevelColor[zapcore.ErrorLevel] } for _, s := range ls { enc.AppendString(s) @@ -223,7 +223,7 @@ func (l *ZapLogger) WithValues(keysAndValues ...interface{}) Logger { func (l *ZapLogger) WithName(name string) Logger { dup := *l - dup.zap = l.zap.Named(name) + dup.zap = l.zap.Named(_levelToColor[l.zap.Level()].Add(name)) return &dup } From 3202b6869deabb00a588391e99284a85d903edbc Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 17 Apr 2023 21:26:04 +0800 Subject: [PATCH 17/22] zap --- pkg/common/log/zap.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pkg/common/log/zap.go b/pkg/common/log/zap.go index 08bcd7de4..ba9c0e5cd 100644 --- a/pkg/common/log/zap.go +++ b/pkg/common/log/zap.go @@ -64,8 +64,8 @@ type ZapLogger struct { func NewZapLogger(logLevel int, isStdout bool, isJson bool, logLocation string, rotateCount uint) (*ZapLogger, error) { zapConfig := zap.Config{ - Level: zap.NewAtomicLevelAt(logLevelMap[logLevel]), - EncoderConfig: zap.NewProductionEncoderConfig(), + Level: zap.NewAtomicLevelAt(logLevelMap[logLevel]), + // EncoderConfig: zap.NewProductionEncoderConfig(), // InitialFields: map[string]interface{}{"PID": os.Getegid()}, DisableStacktrace: true, } @@ -109,7 +109,8 @@ func (l *ZapLogger) cores(logLevel int, isStdout bool, isJson bool, logLocation } else { c.EncodeLevel = l.CapitalColorLevelEncoder customCallerEncoder := func(caller zapcore.EntryCaller, enc zapcore.PrimitiveArrayEncoder) { - enc.AppendString("[" + caller.TrimmedPath() + "]") + s := "[" + caller.TrimmedPath() + "]" + enc.AppendString(_levelToColor[l.zap.Level()].Add(s)) } c.EncodeCaller = customCallerEncoder fileEncoder = zapcore.NewConsoleEncoder(c) From a2b0edf8dee0f5198e017d4c99845ce0767d7d66 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 17 Apr 2023 21:33:08 +0800 Subject: [PATCH 18/22] zap --- pkg/common/log/zap.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/common/log/zap.go b/pkg/common/log/zap.go index ba9c0e5cd..abde18ae8 100644 --- a/pkg/common/log/zap.go +++ b/pkg/common/log/zap.go @@ -91,7 +91,7 @@ func NewZapLogger(logLevel int, isStdout bool, isJson bool, logLocation string, } func (l *ZapLogger) cores(logLevel int, isStdout bool, isJson bool, logLocation string, rotateCount uint) (zap.Option, error) { - c := zap.NewProductionEncoderConfig() + c := zap.NewDevelopmentEncoderConfig() c.EncodeTime = zapcore.RFC3339TimeEncoder c.EncodeDuration = zapcore.SecondsDurationEncoder c.MessageKey = "msg" From f18b03987e95a392cc8c45fd558b3adf39a42d77 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 17 Apr 2023 21:37:04 +0800 Subject: [PATCH 19/22] zap --- pkg/common/log/zap.go | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/pkg/common/log/zap.go b/pkg/common/log/zap.go index abde18ae8..4e3bf606c 100644 --- a/pkg/common/log/zap.go +++ b/pkg/common/log/zap.go @@ -58,6 +58,7 @@ func ZError(ctx context.Context, msg string, err error, keysAndValues ...interfa type ZapLogger struct { zap *zap.SugaredLogger + level zapcore.Level callerKey string loggerKey string } @@ -77,8 +78,8 @@ func NewZapLogger(logLevel int, isStdout bool, isJson bool, logLocation string, // if isStdout { // zapConfig.OutputPaths = append(zapConfig.OutputPaths, "stdout", "stderr") // } - zl := &ZapLogger{} - opts, err := zl.cores(logLevel, isStdout, isJson, logLocation, rotateCount) + zl := &ZapLogger{level: logLevelMap[logLevel]} + opts, err := zl.cores(isStdout, isJson, logLocation, rotateCount) if err != nil { return nil, err } @@ -90,7 +91,7 @@ func NewZapLogger(logLevel int, isStdout bool, isJson bool, logLocation string, return zl, nil } -func (l *ZapLogger) cores(logLevel int, isStdout bool, isJson bool, logLocation string, rotateCount uint) (zap.Option, error) { +func (l *ZapLogger) cores(isStdout bool, isJson bool, logLocation string, rotateCount uint) (zap.Option, error) { c := zap.NewDevelopmentEncoderConfig() c.EncodeTime = zapcore.RFC3339TimeEncoder c.EncodeDuration = zapcore.SecondsDurationEncoder @@ -110,7 +111,7 @@ func (l *ZapLogger) cores(logLevel int, isStdout bool, isJson bool, logLocation c.EncodeLevel = l.CapitalColorLevelEncoder customCallerEncoder := func(caller zapcore.EntryCaller, enc zapcore.PrimitiveArrayEncoder) { s := "[" + caller.TrimmedPath() + "]" - enc.AppendString(_levelToColor[l.zap.Level()].Add(s)) + enc.AppendString(_levelToColor[l.level].Add(s)) } c.EncodeCaller = customCallerEncoder fileEncoder = zapcore.NewConsoleEncoder(c) @@ -123,14 +124,14 @@ func (l *ZapLogger) cores(logLevel int, isStdout bool, isJson bool, logLocation var cores []zapcore.Core if logLocation != "" && !isStdout { cores = []zapcore.Core{ - zapcore.NewCore(fileEncoder, writer, zap.NewAtomicLevelAt(logLevelMap[logLevel])), + zapcore.NewCore(fileEncoder, writer, zap.NewAtomicLevelAt(l.level)), } } if logLocation == "" && !isStdout { return nil, errors.New("log storage location is empty and not stdout") } if isStdout { - cores = append(cores, zapcore.NewCore(fileEncoder, zapcore.Lock(os.Stdout), zap.NewAtomicLevelAt(logLevelMap[logLevel]))) + cores = append(cores, zapcore.NewCore(fileEncoder, zapcore.Lock(os.Stdout), zap.NewAtomicLevelAt(l.level))) } return zap.WrapCore(func(c zapcore.Core) zapcore.Core { return zapcore.NewTee(cores...) @@ -224,7 +225,7 @@ func (l *ZapLogger) WithValues(keysAndValues ...interface{}) Logger { func (l *ZapLogger) WithName(name string) Logger { dup := *l - dup.zap = l.zap.Named(_levelToColor[l.zap.Level()].Add(name)) + dup.zap = l.zap.Named(_levelToColor[l.level].Add(name)) return &dup } From c04b85aa29a7acff3f11adcb9e2b95f4c1b19f49 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 17 Apr 2023 21:39:31 +0800 Subject: [PATCH 20/22] zap --- pkg/common/log/zap.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkg/common/log/zap.go b/pkg/common/log/zap.go index 4e3bf606c..98e36228d 100644 --- a/pkg/common/log/zap.go +++ b/pkg/common/log/zap.go @@ -3,6 +3,7 @@ package log import ( "context" "errors" + "fmt" "os" "path/filepath" "time" @@ -111,7 +112,9 @@ func (l *ZapLogger) cores(isStdout bool, isJson bool, logLocation string, rotate c.EncodeLevel = l.CapitalColorLevelEncoder customCallerEncoder := func(caller zapcore.EntryCaller, enc zapcore.PrimitiveArrayEncoder) { s := "[" + caller.TrimmedPath() + "]" + pid := fmt.Sprintf("["+"PID:"+"%d"+"]", os.Getpid()) enc.AppendString(_levelToColor[l.level].Add(s)) + enc.AppendString(_levelToColor[l.level].Add(pid)) } c.EncodeCaller = customCallerEncoder fileEncoder = zapcore.NewConsoleEncoder(c) From fb668b3f0ca0fedbfe516d43429bd0d230b41326 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 18 Apr 2023 10:37:12 +0800 Subject: [PATCH 21/22] color --- pkg/common/log/color.go | 10 +++++----- pkg/common/log/zap.go | 17 ++++++++++------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/pkg/common/log/color.go b/pkg/common/log/color.go index 774f11133..cd68ac519 100644 --- a/pkg/common/log/color.go +++ b/pkg/common/log/color.go @@ -28,16 +28,16 @@ var ( zapcore.PanicLevel: Red, zapcore.FatalLevel: Red, } - _unknownLevelColor = make(map[zapcore.Level][]string, len(_levelToColor)) + _unknownLevelColor = make(map[zapcore.Level]string, len(_levelToColor)) - _levelToLowercaseColorString = make(map[zapcore.Level][]string, len(_levelToColor)) - _levelToCapitalColorString = make(map[zapcore.Level][]string, len(_levelToColor)) + _levelToLowercaseColorString = make(map[zapcore.Level]string, len(_levelToColor)) + _levelToCapitalColorString = make(map[zapcore.Level]string, len(_levelToColor)) ) func init() { for level, color := range _levelToColor { - _levelToLowercaseColorString[level] = append(_levelToLowercaseColorString[level], color.Add(level.String())) - _levelToCapitalColorString[level] = append(_levelToCapitalColorString[level], color.Add(level.CapitalString())) + _levelToLowercaseColorString[level] = color.Add(level.String()) + _levelToCapitalColorString[level] = color.Add(level.CapitalString()) } } diff --git a/pkg/common/log/zap.go b/pkg/common/log/zap.go index 98e36228d..6f307fab1 100644 --- a/pkg/common/log/zap.go +++ b/pkg/common/log/zap.go @@ -113,8 +113,12 @@ func (l *ZapLogger) cores(isStdout bool, isJson bool, logLocation string, rotate customCallerEncoder := func(caller zapcore.EntryCaller, enc zapcore.PrimitiveArrayEncoder) { s := "[" + caller.TrimmedPath() + "]" pid := fmt.Sprintf("["+"PID:"+"%d"+"]", os.Getpid()) - enc.AppendString(_levelToColor[l.level].Add(s)) - enc.AppendString(_levelToColor[l.level].Add(pid)) + color, ok := _levelToColor[l.level] + if !ok { + color = _levelToColor[zapcore.ErrorLevel] + } + enc.AppendString(color.Add(s)) + enc.AppendString(color.Add(pid)) } c.EncodeCaller = customCallerEncoder fileEncoder = zapcore.NewConsoleEncoder(c) @@ -153,13 +157,12 @@ func (l *ZapLogger) getWriter(logLocation string, rorateCount uint) (zapcore.Wri } func (l *ZapLogger) CapitalColorLevelEncoder(level zapcore.Level, enc zapcore.PrimitiveArrayEncoder) { - ls, ok := _levelToCapitalColorString[level] + s, ok := _levelToCapitalColorString[level] if !ok { - ls = _unknownLevelColor[zapcore.ErrorLevel] - } - for _, s := range ls { - enc.AppendString(s) + s = _unknownLevelColor[zapcore.ErrorLevel] } + + enc.AppendString(s) } func (l *ZapLogger) ToZap() *zap.SugaredLogger { From f4020a2508483eda82d0db4d919f76c6f45af890 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 18 Apr 2023 10:45:23 +0800 Subject: [PATCH 22/22] zap --- pkg/common/log/color.go | 2 +- pkg/common/log/zap.go | 17 ++++++----------- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/pkg/common/log/color.go b/pkg/common/log/color.go index cd68ac519..2cb4fe078 100644 --- a/pkg/common/log/color.go +++ b/pkg/common/log/color.go @@ -20,7 +20,7 @@ const ( var ( _levelToColor = map[zapcore.Level]Color{ - zapcore.DebugLevel: Magenta, + zapcore.DebugLevel: White, zapcore.InfoLevel: Blue, zapcore.WarnLevel: Yellow, zapcore.ErrorLevel: Red, diff --git a/pkg/common/log/zap.go b/pkg/common/log/zap.go index 6f307fab1..2f585e781 100644 --- a/pkg/common/log/zap.go +++ b/pkg/common/log/zap.go @@ -58,10 +58,8 @@ func ZError(ctx context.Context, msg string, err error, keysAndValues ...interfa } type ZapLogger struct { - zap *zap.SugaredLogger - level zapcore.Level - callerKey string - loggerKey string + zap *zap.SugaredLogger + level zapcore.Level } func NewZapLogger(logLevel int, isStdout bool, isJson bool, logLocation string, rotateCount uint) (*ZapLogger, error) { @@ -99,10 +97,6 @@ func (l *ZapLogger) cores(isStdout bool, isJson bool, logLocation string, rotate c.MessageKey = "msg" c.LevelKey = "level" c.TimeKey = "time" - l.callerKey = "caller" - l.loggerKey = "logger" - c.CallerKey = l.callerKey - l.loggerKey = c.NameKey var fileEncoder zapcore.Encoder if isJson { @@ -112,13 +106,12 @@ func (l *ZapLogger) cores(isStdout bool, isJson bool, logLocation string, rotate c.EncodeLevel = l.CapitalColorLevelEncoder customCallerEncoder := func(caller zapcore.EntryCaller, enc zapcore.PrimitiveArrayEncoder) { s := "[" + caller.TrimmedPath() + "]" - pid := fmt.Sprintf("["+"PID:"+"%d"+"]", os.Getpid()) color, ok := _levelToColor[l.level] if !ok { color = _levelToColor[zapcore.ErrorLevel] } enc.AppendString(color.Add(s)) - enc.AppendString(color.Add(pid)) + } c.EncodeCaller = customCallerEncoder fileEncoder = zapcore.NewConsoleEncoder(c) @@ -161,7 +154,9 @@ func (l *ZapLogger) CapitalColorLevelEncoder(level zapcore.Level, enc zapcore.Pr if !ok { s = _unknownLevelColor[zapcore.ErrorLevel] } - + pid := fmt.Sprintf("["+"PID:"+"%d"+"]", os.Getpid()) + color := _levelToColor[level] + enc.AppendString(color.Add(pid)) enc.AppendString(s) }