package fslog import ( "go.uber.org/zap" "go.uber.org/zap/zapcore" "gopkg.in/natefinch/lumberjack.v2" "io" "os" ) var log *Logger // 默认配置,准备了控制台、json文件两种输出方式 var consoleEncoder zapcore.Encoder var jsonEncoder zapcore.Encoder var consoleSync zapcore.WriteSyncer var outputSync zapcore.WriteSyncer func init() { consoleEncoderConfig := zap.NewDevelopmentEncoderConfig() consoleEncoderConfig.EncodeTime = zapcore.TimeEncoderOfLayout("2006-01-02 15:04:05") consoleEncoder = zapcore.NewConsoleEncoder(consoleEncoderConfig) jsonEncoderConfig := zap.NewProductionEncoderConfig() jsonEncoderConfig.EncodeTime = zapcore.TimeEncoderOfLayout("2006-01-02 15:04:05") jsonEncoder = zapcore.NewJSONEncoder(jsonEncoderConfig) consoleSync = zapcore.AddSync(os.Stdout) outputSync = zapcore.AddSync(&lumberjack.Logger{ Filename: "logs/log", MaxSize: 1, MaxAge: 10, LocalTime: true, }) log = New() log.AddCore(BuiltinConsoleCore(DebugLv), BuiltinOutputFileCore(DebugLv)) } // With 见 Logger.With func With(k string, v any) *Logger { return log.With(k, v) } // Info 见 Logger.Info func Info(msg string, vs ...any) *Logger { log.Info(msg, vs...) return log } // Debug 见 Logger.Debug func Debug(msg string, vs ...any) *Logger { log.Debug(msg, vs...) return log } // Warn 见 Logger.Warn func Warn(msg string, vs ...any) *Logger { log.Warn(msg, vs...) return log } // Error 见 Logger.Error func Error(vs ...any) *Logger { log.Error(vs...) return log } // Lv 见 Logger.Lv func Lv() Level { return Level(log.Lv().Level()) } // SetLv 见 Logger.SetLv func SetLv(lv Level) *Logger { log.SetLv(lv) return log } // NewFileOutput 见 Logger.NewFileOutput func NewFileOutput(opts ...FileOutputOpt) *Logger { log.NewFileOutput(opts...) return log } // NewOutput 见 Logger.NewOutput func NewOutput(writer io.Writer) *Logger { log.NewOutput(writer) return log } // SetLogger 替换fslog包默认的log对象 // Logger 支持了很多zapcore级别的底层配置,见 Logger func SetLogger(logger *Logger) *Logger { log = logger return log } // Flush 见 Logger.Flush func Flush() { log.Flush() } // BuiltinConsoleCore 获取内置的控制台输出 zapcore.Core func BuiltinConsoleCore(lv Level) zapcore.Core { return zapcore.NewCore(consoleEncoder, consoleSync, lv.zap()) } // BuiltinOutputFileCore 获取文件输出 zapcore.Core func BuiltinOutputFileCore(lv Level) zapcore.Core { return zapcore.NewCore(jsonEncoder, outputSync, lv.zap()) }