package logger import ( "os" "go.uber.org/zap" "go.uber.org/zap/zapcore" ) // Log 全局日志实例 var Log *zap.Logger // Sugared 全局 SugaredLogger(便捷方法) var Sugared *zap.SugaredLogger // Init 初始化日志 func Init(level string, isProduction bool) { var zapLevel zapcore.Level switch level { case "debug": zapLevel = zapcore.DebugLevel case "info": zapLevel = zapcore.InfoLevel case "warn": zapLevel = zapcore.WarnLevel case "error": zapLevel = zapcore.ErrorLevel default: zapLevel = zapcore.InfoLevel } encoderCfg := zap.NewProductionEncoderConfig() encoderCfg.TimeKey = "time" encoderCfg.EncodeTime = zapcore.ISO8601TimeEncoder encoderCfg.EncodeLevel = zapcore.CapitalLevelEncoder var core zapcore.Core if isProduction { // 生产环境:JSON 格式输出到 stdout core = zapcore.NewCore( zapcore.NewJSONEncoder(encoderCfg), zapcore.Lock(os.Stdout), zapLevel, ) } else { // 开发环境:Console 格式输出 encoderCfg.EncodeLevel = zapcore.CapitalColorLevelEncoder core = zapcore.NewCore( zapcore.NewConsoleEncoder(encoderCfg), zapcore.Lock(os.Stdout), zapLevel, ) } Log = zap.New(core, zap.AddCaller(), zap.AddStacktrace(zapcore.ErrorLevel)) Sugared = Log.Sugar() } // Sync 刷新日志缓冲区 func Sync() { if Log != nil { _ = Log.Sync() } }