gofiber-study/logger/logger.go

55 lines
1.3 KiB
Go
Raw Permalink Normal View History

2022-10-03 03:46:09 +08:00
package logger
import (
2023-02-24 00:22:54 +08:00
"go.uber.org/atomic"
2022-10-03 03:46:09 +08:00
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"os"
)
var logger *zap.Logger
2023-02-24 00:22:54 +08:00
var sugarLogger *zap.SugaredLogger
var level = &atomic.String{}
2022-10-03 03:46:09 +08:00
func init() {
2023-02-24 00:22:54 +08:00
SetLevel(zapcore.DebugLevel)
2022-10-03 03:46:09 +08:00
encoder := zapcore.NewConsoleEncoder(DefaultEncoderConfig())
multiWriteSyncer := zapcore.NewMultiWriteSyncer(DefaultConsoleSyncer())
2023-02-24 00:22:54 +08:00
core := zapcore.NewCore(encoder, multiWriteSyncer, DefaultLevelEnabler())
2022-10-03 03:46:09 +08:00
logger = zap.New(core, zap.AddCaller())
2023-02-24 00:22:54 +08:00
_ = logger.Sync()
sugarLogger = logger.Sugar()
_ = sugarLogger.Sync()
}
func SetLevel(l zapcore.Level) {
level.Store(l.String())
}
func DefaultLevelEnabler() zap.LevelEnablerFunc {
return func(z zapcore.Level) bool {
l, _ := zapcore.ParseLevel(level.Load())
return z >= l
}
2022-10-03 03:46:09 +08:00
}
func DefaultTimeEncoder() (timeEncoder zapcore.TimeEncoder) {
timeEncoder = zapcore.TimeEncoderOfLayout("2006-01-02 15:04:05.000")
return
}
func DefaultEncoderConfig() (encoderConfig zapcore.EncoderConfig) {
encoderConfig = zap.NewProductionEncoderConfig()
encoderConfig.EncodeTime = DefaultTimeEncoder()
encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder
return
}
func DefaultConsoleSyncer() zapcore.WriteSyncer {
return zapcore.AddSync(os.Stdout)
}
func Logger() *zap.SugaredLogger {
return sugarLogger
}