Add log rotation
This commit is contained in:
1
go.mod
1
go.mod
@@ -21,6 +21,7 @@ require (
|
|||||||
require (
|
require (
|
||||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect
|
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect
|
||||||
github.com/modern-go/reflect2 v1.0.2 // indirect
|
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||||
|
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
|||||||
2
go.sum
2
go.sum
@@ -48,6 +48,8 @@ golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E=
|
|||||||
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
|
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
|
||||||
|
gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import (
|
|||||||
|
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"go.uber.org/zap/zapcore"
|
"go.uber.org/zap/zapcore"
|
||||||
|
"gopkg.in/natefinch/lumberjack.v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Logger struct {
|
type Logger struct {
|
||||||
@@ -37,9 +38,6 @@ func NewLogger(logPath string) *Logger {
|
|||||||
zapLevel = zapcore.DebugLevel
|
zapLevel = zapcore.DebugLevel
|
||||||
}
|
}
|
||||||
|
|
||||||
zapCfg := zap.NewDevelopmentConfig()
|
|
||||||
zapCfg.Level.SetLevel(zapLevel)
|
|
||||||
|
|
||||||
consoleCfg := zapcore.EncoderConfig{
|
consoleCfg := zapcore.EncoderConfig{
|
||||||
TimeKey: "time",
|
TimeKey: "time",
|
||||||
LevelKey: "level",
|
LevelKey: "level",
|
||||||
@@ -53,6 +51,13 @@ func NewLogger(logPath string) *Logger {
|
|||||||
EncodeDuration: zapcore.StringDurationEncoder,
|
EncodeDuration: zapcore.StringDurationEncoder,
|
||||||
}
|
}
|
||||||
consoleEncoder := zapcore.NewConsoleEncoder(consoleCfg)
|
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{
|
fileCfg := zapcore.EncoderConfig{
|
||||||
TimeKey: "time",
|
TimeKey: "time",
|
||||||
@@ -67,20 +72,10 @@ func NewLogger(logPath string) *Logger {
|
|||||||
EncodeDuration: zapcore.StringDurationEncoder,
|
EncodeDuration: zapcore.StringDurationEncoder,
|
||||||
}
|
}
|
||||||
fileEncoder := zapcore.NewConsoleEncoder(fileCfg)
|
fileEncoder := zapcore.NewConsoleEncoder(fileCfg)
|
||||||
|
fileEncoderCore := zapcore.NewCore(fileEncoder, zapcore.AddSync(logFile), zapLevel)
|
||||||
|
|
||||||
// Set up file logging with overwrite mode
|
cores := zapcore.NewTee(consoleEncoderCore, fileEncoderCore)
|
||||||
logFile, err := os.OpenFile(logPath, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0644)
|
logger := zap.New(cores, zap.AddCaller(), zap.Development())
|
||||||
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())
|
|
||||||
defer logger.Sync() // flushes buffer, if any
|
defer logger.Sync() // flushes buffer, if any
|
||||||
sugar := logger.Sugar()
|
sugar := logger.Sugar()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user