68 lines
1.7 KiB
Go
68 lines
1.7 KiB
Go
package logger
|
|
|
|
import (
|
|
"os"
|
|
"recipe-manager/config"
|
|
"time"
|
|
|
|
"github.com/natefinch/lumberjack"
|
|
"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
|
|
})
|
|
|
|
logCore := zapcore.NewTee(
|
|
zapcore.NewCore(zapcore.NewJSONEncoder(zapcore.EncoderConfig{
|
|
TimeKey: "timestamp",
|
|
LevelKey: "level",
|
|
NameKey: "logger",
|
|
CallerKey: "caller",
|
|
MessageKey: "message",
|
|
StacktraceKey: "error",
|
|
EncodeLevel: zapcore.LowercaseLevelEncoder,
|
|
EncodeTime: zapcore.TimeEncoderOfLayout(time.DateTime),
|
|
}), zapcore.AddSync(&lumberjack.Logger{
|
|
Filename: "services/logger/serverlog.log",
|
|
MaxSize: 5, // megabytes
|
|
MaxAge: 28, //days
|
|
LocalTime: true,
|
|
Compress: true,
|
|
}), enableDebugMode),
|
|
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),
|
|
)
|
|
|
|
return zap.New(logCore)
|
|
}
|
|
|
|
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
|
|
}
|