Taobin-Recipe-Manager/server/services/logger/logger.go
2024-06-19 13:56:56 +07:00

63 lines
1.7 KiB
Go

package logger
import (
"os"
"recipe-manager/config"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
type TaoLogger struct {
cfg *config.ServerConfig
enableDebug bool
Log *zap.Logger
}
func (tl *TaoLogger) initConfig() *zap.Logger {
enableDebugMode := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
return lvl >= zap.InfoLevel || tl.enableDebug
})
productionConfig := zap.NewProductionEncoderConfig()
productionConfig.EncodeTime = zapcore.ISO8601TimeEncoder
productionConfig.EncodeLevel = zapcore.CapitalColorLevelEncoder
// fileEncoder := zapcore.NewJSONEncoder(productionConfig)
consoleEncoder := zapcore.NewConsoleEncoder(productionConfig)
// logCore := zapcore.NewTee(
// zapcore.NewCore(zapcore.NewJSONEncoder(productionConfig),
// zapcore.NewCore(zapcore.NewConsoleEncoder(zapcore.EncoderConfig{
// TimeKey: "timestamp",
// LevelKey: "level",
// NameKey: "logger",
// CallerKey: "caller",
// MessageKey: "message",
// StacktraceKey: "error",
// EncodeLevel: zapcore.CapitalColorLevelEncoder,
// EncodeTime: zapcore.ISO8601TimeEncoder,
// }), zapcore.AddSync(os.Stdout), enableDebugMode),
// )
core := zapcore.NewTee(
// zapcore.NewCore(fileEncoder, zapcore.AddSync(), enableDebugMode),
zapcore.NewCore(consoleEncoder, zapcore.AddSync(os.Stdout), enableDebugMode),
)
return zap.New(core)
}
func NewTaoLogger(cfg *config.ServerConfig) *TaoLogger {
logger := &TaoLogger{cfg, false, nil}
logger.Log = logger.initConfig()
if cfg.Debug {
// logger.SetLevel("DEBUG")
logger.Log.Debug("Debug mode", zap.Bool("enable", cfg.Debug))
logger.enableDebug = true
}
return logger
}