123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- package logger
- import (
- "go.uber.org/zap"
- "go.uber.org/zap/zapcore"
- "gopkg.in/natefinch/lumberjack.v2"
- "os"
- "zhiyuan/pkg/config"
- )
- var Sugar *zap.SugaredLogger
- var Log *zap.Logger
- type Option struct {
- mode string
- }
- type OptionFunc func(opt *Option)
- func WithMode(mode string) OptionFunc {
- return func(opt *Option) {
- opt.mode = mode
- }
- }
- func Setup(options ...OptionFunc) {
- opt := Option{
- mode: "auto",
- }
- for _, fun := range options {
- fun(&opt)
- }
- encoder := getEncoder()
- writes := []zapcore.WriteSyncer{}
- if opt.mode == "go_test" {
- writes = append(writes, zapcore.AddSync(os.Stdout))
- } else {
- writes = append(writes, getLogWriter())
- if config.Cfg.Server.RunMode == "debug" {
- writes = append(writes, zapcore.AddSync(os.Stdout))
- }
- }
- core := zapcore.NewCore(
- encoder,
- zapcore.NewMultiWriteSyncer(writes...),
- zapcore.DebugLevel)
- Log = zap.New(core, zap.AddCaller())
- Log.Info("init zap log")
- Sugar = Log.Sugar()
- defer Log.Sync()
- }
- func getEncoder() zapcore.Encoder {
- encoderConfig := zap.NewProductionEncoderConfig()
- encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
- encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder
- return zapcore.NewConsoleEncoder(encoderConfig)
- }
- func getLogWriter() zapcore.WriteSyncer {
- lumberJackLogger := &lumberjack.Logger{
- Filename: config.Cfg.Log.Filename,
- MaxSize: config.Cfg.Log.MaxSize,
- MaxBackups: config.Cfg.Log.MaxBackups,
- MaxAge: config.Cfg.Log.MaxAge,
- Compress: config.Cfg.Log.Compress,
- }
- return zapcore.AddSync(lumberJackLogger)
- }
|