busniess-user-center/pkg/log/log.go

61 lines
1.4 KiB
Go

package log
import (
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"gopkg.in/natefinch/lumberjack.v2"
)
func NewLogger(conf Conf) (*zap.Logger, error) {
zLevel, err := zapcore.ParseLevel(conf.Level)
if err != nil {
return nil, err
}
if conf.SyncConf == nil {
conf.SyncConf = &defaultSyncConf
} else {
conf.SyncConf.setDefaultSyncConf()
}
return zap.New(zapcore.NewCore(getEncoder(outFormat(conf.OutFormat)),
getWriteSyncer(conf.FileName, conf.SyncConf), zLevel),
zap.AddCaller()), nil
}
func NewSugarLogger(conf Conf) (*zap.SugaredLogger, error) {
logger, err := NewLogger(conf)
if err != nil {
return nil, err
}
return logger.Sugar(), nil
}
func getEncoder(format outFormat) zapcore.Encoder {
encoderConfig := zap.NewProductionEncoderConfig()
encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder
encoderConfig.FunctionKey = "function"
if format == Json {
return zapcore.NewJSONEncoder(encoderConfig)
} else if format == console {
return zapcore.NewConsoleEncoder(encoderConfig)
}
return zapcore.NewJSONEncoder(encoderConfig)
}
func getWriteSyncer(destFile string, conf *syncConf) zapcore.WriteSyncer {
lumberjackLogger := &lumberjack.Logger{
Filename: destFile,
MaxSize: conf.MaxSize,
MaxBackups: conf.MaxBackUps,
MaxAge: conf.MaxAges,
Compress: conf.Compress,
}
return zapcore.AddSync(lumberjackLogger)
}