add field
This commit is contained in:
		@@ -35,15 +35,15 @@ const (
 | 
				
			|||||||
	White
 | 
						White
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (lc *logConfig) initColor() {
 | 
					func (config *logConfig) initColor() {
 | 
				
			||||||
	for level, color := range _levelToColor {
 | 
						for level, color := range _levelToColor {
 | 
				
			||||||
		lcs := level.String()
 | 
							lcs := level.String()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if lc.EnableCapitalLevel {
 | 
							if config.EnableCapitalLevel {
 | 
				
			||||||
			lcs = level.CapitalString()
 | 
								lcs = level.CapitalString()
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if lc.EnableLevelTruncation {
 | 
							if config.EnableLevelTruncation {
 | 
				
			||||||
			lcs = lcs[:4]
 | 
								lcs = lcs[:4]
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		_levelToColorStrings[level] = color.Add(lcs)
 | 
							_levelToColorStrings[level] = color.Add(lcs)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										89
									
								
								log.go
									
									
									
									
									
								
							
							
						
						
									
										89
									
								
								log.go
									
									
									
									
									
								
							@@ -43,22 +43,23 @@ type logConfig struct {
 | 
				
			|||||||
	EnableCapitalLevel    bool
 | 
						EnableCapitalLevel    bool
 | 
				
			||||||
	atomicLevel           zap.AtomicLevel
 | 
						atomicLevel           zap.AtomicLevel
 | 
				
			||||||
	Name                  string
 | 
						Name                  string
 | 
				
			||||||
 | 
						Fields                []zap.Field
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	*lumberjack.Logger
 | 
						*lumberjack.Logger
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func init() {
 | 
					func init() {
 | 
				
			||||||
	lc := &logConfig{
 | 
						config := &logConfig{
 | 
				
			||||||
		Logger: &lumberjack.Logger{
 | 
							Logger: &lumberjack.Logger{
 | 
				
			||||||
			LocalTime: true,
 | 
								LocalTime: true,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	logger = lc.newLogger().Sugar()
 | 
						logger = config.newLogger().Sugar()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (lc *logConfig) Init() {
 | 
					func (config *logConfig) Init() {
 | 
				
			||||||
	logger = lc.newLogger().Sugar()
 | 
						logger = config.newLogger().Sugar()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewLogConfig() *logConfig {
 | 
					func NewLogConfig() *logConfig {
 | 
				
			||||||
@@ -84,54 +85,54 @@ func NewLogConfig() *logConfig {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (lc *logConfig) newLogger() *zap.Logger {
 | 
					func (config *logConfig) newLogger() *zap.Logger {
 | 
				
			||||||
	if lc.CrashLogFilename != "" {
 | 
						if config.CrashLogFilename != "" {
 | 
				
			||||||
		writeCrashLog(lc.CrashLogFilename)
 | 
							writeCrashLog(config.CrashLogFilename)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	lc.atomicLevel = zap.NewAtomicLevelAt(lc.Level)
 | 
						config.atomicLevel = zap.NewAtomicLevelAt(config.Level)
 | 
				
			||||||
	lc.initColor()
 | 
						config.initColor()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	cores := []zapcore.Core{
 | 
						cores := []zapcore.Core{
 | 
				
			||||||
		zapcore.NewCore(
 | 
							zapcore.NewCore(
 | 
				
			||||||
			encoder.NewTextEncoder(lc.encoderConfig()),
 | 
								encoder.NewTextEncoder(config.encoderConfig()),
 | 
				
			||||||
			zapcore.Lock(os.Stdout),
 | 
								zapcore.Lock(os.Stdout),
 | 
				
			||||||
			lc.atomicLevel,
 | 
								config.atomicLevel,
 | 
				
			||||||
		)}
 | 
							)}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if lc.Filename != "" {
 | 
						if config.Filename != "" {
 | 
				
			||||||
		cores = append(cores, lc.fileCore())
 | 
							cores = append(cores, config.fileCore())
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if lc.ErrorLogFilename != "" {
 | 
						if config.ErrorLogFilename != "" {
 | 
				
			||||||
		cores = append(cores, lc.errorFileCore())
 | 
							cores = append(cores, config.errorFileCore())
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	core := zapcore.NewTee(cores...)
 | 
						core := zapcore.NewTee(cores...)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var options []zap.Option
 | 
						var options []zap.Option
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if lc.EnableLineNumber {
 | 
						if config.EnableLineNumber {
 | 
				
			||||||
		options = append(options, zap.AddCaller(), zap.AddCallerSkip(1))
 | 
							options = append(options, zap.AddCaller(), zap.AddCallerSkip(1))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if lc.EnableErrorStacktrace {
 | 
						if config.EnableErrorStacktrace {
 | 
				
			||||||
		options = append(options, zap.AddStacktrace(zapcore.ErrorLevel))
 | 
							options = append(options, zap.AddStacktrace(zapcore.ErrorLevel))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	zapLog := zap.New(core, options...)
 | 
						zapLog := zap.New(core, options...)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if lc.Name != "" {
 | 
						if config.Name != "" {
 | 
				
			||||||
		zapLog = zapLog.Named(fmt.Sprintf("[%s]", lc.Name))
 | 
							zapLog = zapLog.Named(fmt.Sprintf("[%s]", config.Name))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return zapLog
 | 
						return zapLog.With(config.Fields...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (lc *logConfig) encoderConfig() zapcore.EncoderConfig {
 | 
					func (config *logConfig) encoderConfig() zapcore.EncoderConfig {
 | 
				
			||||||
	el := lc.encodeLevel
 | 
						el := config.encodeLevel
 | 
				
			||||||
	if lc.EnableColors {
 | 
						if config.EnableColors {
 | 
				
			||||||
		el = lc.encodeColorLevel
 | 
							el = config.encodeColorLevel
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return zapcore.EncoderConfig{
 | 
						return zapcore.EncoderConfig{
 | 
				
			||||||
@@ -145,8 +146,8 @@ func (lc *logConfig) encoderConfig() zapcore.EncoderConfig {
 | 
				
			|||||||
		EncodeLevel:   el,
 | 
							EncodeLevel:   el,
 | 
				
			||||||
		EncodeTime: func(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
 | 
							EncodeTime: func(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
 | 
				
			||||||
			tf := time.RFC3339
 | 
								tf := time.RFC3339
 | 
				
			||||||
			if lc.TimestampFormat != "" {
 | 
								if config.TimestampFormat != "" {
 | 
				
			||||||
				tf = lc.TimestampFormat
 | 
									tf = config.TimestampFormat
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			enc.AppendString(t.Format(fmt.Sprintf("[%s]", tf)))
 | 
								enc.AppendString(t.Format(fmt.Sprintf("[%s]", tf)))
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
@@ -157,40 +158,40 @@ func (lc *logConfig) encoderConfig() zapcore.EncoderConfig {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (lc *logConfig) fileCore() zapcore.Core {
 | 
					func (config *logConfig) fileCore() zapcore.Core {
 | 
				
			||||||
	return zapcore.NewCore(
 | 
						return zapcore.NewCore(
 | 
				
			||||||
		encoder.NewTextEncoder(lc.encoderConfig()),
 | 
							encoder.NewTextEncoder(config.encoderConfig()),
 | 
				
			||||||
		// zapcore.NewMultiWriteSyncer(
 | 
							// zapcore.NewMultiWriteSyncer(
 | 
				
			||||||
		// 	zapcore.Lock(os.Stdout),
 | 
							// 	zapcore.Lock(os.Stdout),
 | 
				
			||||||
		// 	lc.fileWriteSyncer(),
 | 
							// 	config.fileWriteSyncer(),
 | 
				
			||||||
		// ),
 | 
							// ),
 | 
				
			||||||
		lc.fileWriteSyncer(lc.Filename),
 | 
							config.fileWriteSyncer(config.Filename),
 | 
				
			||||||
		lc.atomicLevel,
 | 
							config.atomicLevel,
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (lc *logConfig) errorFileCore() zapcore.Core {
 | 
					func (config *logConfig) errorFileCore() zapcore.Core {
 | 
				
			||||||
	return zapcore.NewCore(
 | 
						return zapcore.NewCore(
 | 
				
			||||||
		encoder.NewTextEncoder(lc.encoderConfig()),
 | 
							encoder.NewTextEncoder(config.encoderConfig()),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		lc.fileWriteSyncer(lc.ErrorLogFilename),
 | 
							config.fileWriteSyncer(config.ErrorLogFilename),
 | 
				
			||||||
		zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
 | 
							zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
 | 
				
			||||||
			return lvl >= zapcore.ErrorLevel
 | 
								return lvl >= zapcore.ErrorLevel
 | 
				
			||||||
		}),
 | 
							}),
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (lc *logConfig) encodeLevel(l zapcore.Level, enc zapcore.PrimitiveArrayEncoder) {
 | 
					func (config *logConfig) encodeLevel(l zapcore.Level, enc zapcore.PrimitiveArrayEncoder) {
 | 
				
			||||||
	levelString := l.CapitalString()
 | 
						levelString := l.CapitalString()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if lc.EnableLevelTruncation {
 | 
						if config.EnableLevelTruncation {
 | 
				
			||||||
		levelString = levelString[:4]
 | 
							levelString = levelString[:4]
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	enc.AppendString(fmt.Sprintf("[%s]", levelString))
 | 
						enc.AppendString(fmt.Sprintf("[%s]", levelString))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (lc *logConfig) encodeColorLevel(l zapcore.Level, enc zapcore.PrimitiveArrayEncoder) {
 | 
					func (config *logConfig) encodeColorLevel(l zapcore.Level, enc zapcore.PrimitiveArrayEncoder) {
 | 
				
			||||||
	s, ok := _levelToColorStrings[l]
 | 
						s, ok := _levelToColorStrings[l]
 | 
				
			||||||
	if !ok {
 | 
						if !ok {
 | 
				
			||||||
		s = _unknownLevelColor.Add(l.CapitalString())
 | 
							s = _unknownLevelColor.Add(l.CapitalString())
 | 
				
			||||||
@@ -219,7 +220,7 @@ func trimCallerFilePath(ec zapcore.EntryCaller) string {
 | 
				
			|||||||
	return fmt.Sprintf(" %s", caller)
 | 
						return fmt.Sprintf(" %s", caller)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (lc *logConfig) fileWriteSyncer(fileName string) zapcore.WriteSyncer {
 | 
					func (config *logConfig) fileWriteSyncer(fileName string) zapcore.WriteSyncer {
 | 
				
			||||||
	// go get github.com/lestrrat-go/file-rotatelogs
 | 
						// go get github.com/lestrrat-go/file-rotatelogs
 | 
				
			||||||
	// writer, err := rotatelogs.New(
 | 
						// writer, err := rotatelogs.New(
 | 
				
			||||||
	// 	name+".%Y%m%d",
 | 
						// 	name+".%Y%m%d",
 | 
				
			||||||
@@ -233,12 +234,12 @@ func (lc *logConfig) fileWriteSyncer(fileName string) zapcore.WriteSyncer {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	writer := &lumberjack.Logger{
 | 
						writer := &lumberjack.Logger{
 | 
				
			||||||
		Filename:         fileName,
 | 
							Filename:         fileName,
 | 
				
			||||||
		MaxSize:          lc.MaxSize, // 单个日志文件大小(MB)
 | 
							MaxSize:          config.MaxSize, // 单个日志文件大小(MB)
 | 
				
			||||||
		MaxBackups:       lc.MaxBackups,
 | 
							MaxBackups:       config.MaxBackups,
 | 
				
			||||||
		MaxAge:           lc.MaxAge, // 保留多少天的日志
 | 
							MaxAge:           config.MaxAge, // 保留多少天的日志
 | 
				
			||||||
		LocalTime:        lc.LocalTime,
 | 
							LocalTime:        config.LocalTime,
 | 
				
			||||||
		Compress:         lc.Compress,
 | 
							Compress:         config.Compress,
 | 
				
			||||||
		BackupTimeFormat: lc.BackupTimeFormat,
 | 
							BackupTimeFormat: config.BackupTimeFormat,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Rotating log files daily
 | 
						// Rotating log files daily
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										16
									
								
								log_test.go
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								log_test.go
									
									
									
									
									
								
							@@ -1,6 +1,7 @@
 | 
				
			|||||||
package log
 | 
					package log
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"go.uber.org/zap"
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -13,14 +14,19 @@ func TestLog(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestLogWithConfig(t *testing.T) {
 | 
					func TestLogWithConfig(t *testing.T) {
 | 
				
			||||||
	lc := NewLogConfig()
 | 
						config := NewLogConfig()
 | 
				
			||||||
	_ = lc.Level.Set("info")
 | 
						_ = config.Level.Set("d")
 | 
				
			||||||
	lc.Name = "main"
 | 
						config.Name = "main"
 | 
				
			||||||
	lc.Init()
 | 
						//config.Fields = []zap.Field{zap.String("traceid", "12123123123")}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						config.Init()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						With("foo", "baz")
 | 
				
			||||||
	Debugf("this is %s message", "debug")
 | 
						Debugf("this is %s message", "debug")
 | 
				
			||||||
 | 
						config.Init()
 | 
				
			||||||
 | 
						With(zap.String("traceid", "12123123123"))
 | 
				
			||||||
	Infof("this is %s message", "info")
 | 
						Infof("this is %s message", "info")
 | 
				
			||||||
	Errorf("this is %s message", "error")
 | 
						//Errorf("this is %s message", "error")
 | 
				
			||||||
	// Panicf("this is %s message", "panic")
 | 
						// Panicf("this is %s message", "panic")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,9 @@
 | 
				
			|||||||
package log
 | 
					package log
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func With(args ...interface{}) {
 | 
				
			||||||
 | 
						logger = logger.With(args...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func Debug(args ...interface{}) {
 | 
					func Debug(args ...interface{}) {
 | 
				
			||||||
	logger.Debug(args...)
 | 
						logger.Debug(args...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user