lumberjack的Logger结构体说明
- Filename 写日志的文件名称
- MaxSize 每个日志文件长度的最大大小
- MaxAge 日志保留的最大天数
- MaxBackups 只保留最近多少个日志文件,用于控制程序总日志的大小
- LocalTime 是否使用本地时间,默认使用UTC时间
- Compress 是否压缩日志文件, 压缩方法 gzip
package main
import (
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
lumberjack "gopkg.in/natefinch/lumberjack.v2"
)
func initLogger(logpath string, loglevel string) *zap.Logger {
hook := lumberjack.Logger{
Filename: logpath, // ⽇志⽂件路径
MaxSize: 1024, // megabytes
MaxBackups: 3, // 最多保留3个备份
MaxAge: 7, //days
Compress: true, // 是否压缩 disabled by default
}
w := zapcore.AddSync(&hook)
var level zapcore.Level
switch loglevel {
case "debug":
level = zap.DebugLevel
case "info":
level = zap.InfoLevel
case "error":
level = zap.ErrorLevel
default:
level = zap.InfoLevel
}
encoderConfig := zap.NewProductionEncoderConfig()
encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
core := zapcore.NewCore(
zapcore.NewConsoleEncoder(encoderConfig),
w,
level,
)
logger := zap.New(core)
logger.Info("DefaultLogger init success")
return logger
}
func main() {
logger := initLogger("all.log", "info")
logger.Info("test log", zap.Int("line", 47))
logger.Warn("testlog", zap.Int("line", 47))
}