Add log rotation
This commit is contained in:
@@ -11,6 +11,7 @@ import (
|
||||
|
||||
"go.uber.org/zap"
|
||||
"go.uber.org/zap/zapcore"
|
||||
"gopkg.in/natefinch/lumberjack.v2"
|
||||
)
|
||||
|
||||
type Logger struct {
|
||||
@@ -37,9 +38,6 @@ func NewLogger(logPath string) *Logger {
|
||||
zapLevel = zapcore.DebugLevel
|
||||
}
|
||||
|
||||
zapCfg := zap.NewDevelopmentConfig()
|
||||
zapCfg.Level.SetLevel(zapLevel)
|
||||
|
||||
consoleCfg := zapcore.EncoderConfig{
|
||||
TimeKey: "time",
|
||||
LevelKey: "level",
|
||||
@@ -53,6 +51,13 @@ func NewLogger(logPath string) *Logger {
|
||||
EncodeDuration: zapcore.StringDurationEncoder,
|
||||
}
|
||||
consoleEncoder := zapcore.NewConsoleEncoder(consoleCfg)
|
||||
consoleEncoderCore := zapcore.NewCore(consoleEncoder, zapcore.AddSync(os.Stdout), zapLevel)
|
||||
|
||||
// Set up file logging with overwrite mode
|
||||
logFile := zapcore.AddSync(&lumberjack.Logger{
|
||||
Filename: logPath,
|
||||
})
|
||||
fmt.Println("Logging to", logPath)
|
||||
|
||||
fileCfg := zapcore.EncoderConfig{
|
||||
TimeKey: "time",
|
||||
@@ -67,20 +72,10 @@ func NewLogger(logPath string) *Logger {
|
||||
EncodeDuration: zapcore.StringDurationEncoder,
|
||||
}
|
||||
fileEncoder := zapcore.NewConsoleEncoder(fileCfg)
|
||||
fileEncoderCore := zapcore.NewCore(fileEncoder, zapcore.AddSync(logFile), zapLevel)
|
||||
|
||||
// Set up file logging with overwrite mode
|
||||
logFile, err := os.OpenFile(logPath, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0644)
|
||||
if err != nil {
|
||||
panic("cannot open log file: " + err.Error())
|
||||
}
|
||||
fmt.Println("Logging to", logPath)
|
||||
|
||||
core := zapcore.NewTee(
|
||||
zapcore.NewCore(consoleEncoder, zapcore.AddSync(os.Stdout), zapCfg.Level),
|
||||
zapcore.NewCore(fileEncoder, zapcore.AddSync(logFile), zapCfg.Level),
|
||||
)
|
||||
|
||||
logger := zap.New(core, zap.AddCaller(), zap.Development())
|
||||
cores := zapcore.NewTee(consoleEncoderCore, fileEncoderCore)
|
||||
logger := zap.New(cores, zap.AddCaller(), zap.Development())
|
||||
defer logger.Sync() // flushes buffer, if any
|
||||
sugar := logger.Sugar()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user