package zlog import ( "os" "go.uber.org/zap" "go.uber.org/zap/zapcore" ) var ( zLogger *zap.Logger zSugar *zap.SugaredLogger ) func init() { // 默认日志器 // zLogger, _ = zap.NewProduction() // zSugar = zLogger.Sugar() Init() } func Sync() { _ = zLogger.Sync() } // 初始化日志器 func Init(coreOptions ...CoreOption) { encoder := getEncoder() // 控制台输出(所有级别) cores := []zapcore.Core{ zapcore.NewCore(encoder, zapcore.Lock(os.Stdout), zapcore.DebugLevel), // 控制台输出 } // 输出日志到多个目标(控制台+文件) for _, option := range coreOptions { core := option(encoder) cores = append(cores, core) } // 创建 Core(核心日志器) core := zapcore.NewTee(cores...) zLogger = zap.New(core, zap.AddCaller(), zap.AddCallerSkip(1)) zSugar = zLogger.Sugar() } func getEncoder() zapcore.Encoder { encoderConfig := zap.NewProductionEncoderConfig() encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder // 修改时间编码器 // 在日志文件中使用大写字母记录日志级别 encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder // NewConsoleEncoder 打印更符合人们观察的方式 return zapcore.NewConsoleEncoder(encoderConfig) }