Spaces:
Paused
Paused
| package utils | |
| import ( | |
| "os" | |
| "time" | |
| "go.uber.org/zap" | |
| "go.uber.org/zap/zapcore" | |
| "gopkg.in/natefinch/lumberjack.v2" | |
| ) | |
| var Logger *zap.Logger | |
| func InitLogger(debugMode bool) { | |
| customTimeEncoder := func(t time.Time, enc zapcore.PrimitiveArrayEncoder) { | |
| enc.AppendString(t.Format("02/01/2006 03:04 PM")) | |
| } | |
| consoleConfig := zap.NewDevelopmentEncoderConfig() | |
| consoleConfig.EncodeLevel = zapcore.CapitalColorLevelEncoder | |
| consoleConfig.EncodeTime = customTimeEncoder | |
| consoleEncoder := zapcore.NewConsoleEncoder(consoleConfig) | |
| fileEncoderConfig := zap.NewProductionEncoderConfig() | |
| fileEncoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder | |
| fileEncoder := zapcore.NewJSONEncoder(fileEncoderConfig) | |
| fileWriter := zapcore.AddSync(&lumberjack.Logger{ | |
| Filename: "logs/app.log", | |
| MaxSize: 10, | |
| MaxBackups: 3, | |
| MaxAge: 7, | |
| Compress: true, | |
| }) | |
| var consoleLevel zapcore.Level | |
| if debugMode { | |
| consoleLevel = zapcore.DebugLevel | |
| } else { | |
| consoleLevel = zapcore.InfoLevel | |
| } | |
| core := zapcore.NewTee( | |
| zapcore.NewCore(consoleEncoder, zapcore.AddSync(os.Stdout), consoleLevel), | |
| zapcore.NewCore(fileEncoder, fileWriter, zapcore.DebugLevel), | |
| ) | |
| Logger = zap.New(core, zap.AddStacktrace(zapcore.FatalLevel)) | |
| } | |