61 lines
1.4 KiB
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)
|
|
}
|