1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
   | 
 
 
 
 
 
 
 
 
  func NewLogger(filePath string, level zapcore.Level, maxSize int, maxBackups int, maxAge int, compress bool, serviceName string) *zap.Logger { 	core := newCore(filePath, level, maxSize, maxBackups, maxAge, compress) 	return zap.New(core, zap.AddCaller(), zap.Development(), zap.Fields(zap.String("serviceName", serviceName))) }
 
 
 
  func newCore(filePath string, level zapcore.Level, maxSize int, maxBackups int, maxAge int, compress bool) zapcore.Core { 	 	hook := lumberjack.Logger{ 		Filename:   filePath,    		MaxSize:    maxSize,     		MaxBackups: maxBackups,  		MaxAge:     maxAge,      		Compress:   compress,    	} 	 	atomicLevel := zap.NewAtomicLevel() 	atomicLevel.SetLevel(level) 	 	encoderConfig := zapcore.EncoderConfig{ 		TimeKey:        "time", 		LevelKey:       "level", 		NameKey:        "logger", 		CallerKey:      "linenum", 		MessageKey:     "msg", 		StacktraceKey:  "stacktrace", 		LineEnding:     zapcore.DefaultLineEnding, 		EncodeLevel:    zapcore.LowercaseLevelEncoder,   		EncodeTime:     zapcore.ISO8601TimeEncoder,      		EncodeDuration: zapcore.SecondsDurationEncoder,  		EncodeCaller:   zapcore.FullCallerEncoder,       		EncodeName:     zapcore.FullNameEncoder, 	} 	return zapcore.NewCore( 		zapcore.NewJSONEncoder(encoderConfig),                                            		zapcore.NewMultiWriteSyncer(zapcore.AddSync(os.Stdout), zapcore.AddSync(&hook)),  		atomicLevel,                                                                      	) }
 
  |