45 lines
1.2 KiB
Go
45 lines
1.2 KiB
Go
package zap
|
|
|
|
import (
|
|
zapLogger "github.com/go-kratos/kratos/contrib/log/zap/v2"
|
|
|
|
"github.com/go-kratos/kratos/v2/log"
|
|
|
|
conf "github.com/tx7do/kratos-bootstrap/api/gen/go/conf/v1"
|
|
|
|
"go.uber.org/zap"
|
|
"go.uber.org/zap/zapcore"
|
|
"gopkg.in/natefinch/lumberjack.v2"
|
|
)
|
|
|
|
// NewLogger 创建一个新的日志记录器 - Zap
|
|
func NewLogger(cfg *conf.Logger) log.Logger {
|
|
encoderConfig := zap.NewProductionEncoderConfig()
|
|
encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
|
|
encoderConfig.TimeKey = "time"
|
|
encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder
|
|
encoderConfig.EncodeDuration = zapcore.SecondsDurationEncoder
|
|
encoderConfig.EncodeCaller = zapcore.ShortCallerEncoder
|
|
jsonEncoder := zapcore.NewJSONEncoder(encoderConfig)
|
|
|
|
lumberJackLogger := &lumberjack.Logger{
|
|
Filename: cfg.Zap.Filename,
|
|
MaxSize: int(cfg.Zap.MaxSize),
|
|
MaxBackups: int(cfg.Zap.MaxBackups),
|
|
MaxAge: int(cfg.Zap.MaxAge),
|
|
}
|
|
writeSyncer := zapcore.AddSync(lumberJackLogger)
|
|
|
|
var lvl = new(zapcore.Level)
|
|
if err := lvl.UnmarshalText([]byte(cfg.Zap.Level)); err != nil {
|
|
return nil
|
|
}
|
|
|
|
core := zapcore.NewCore(jsonEncoder, writeSyncer, lvl)
|
|
logger := zap.New(core).WithOptions()
|
|
|
|
wrapped := zapLogger.NewLogger(logger)
|
|
|
|
return wrapped
|
|
}
|