旋转日志-如何将时间戳添加到日志文件名



下面的轮换日志代码:

package main
import (
"os"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
lumberjack "gopkg.in/natefinch/lumberjack.v2"
)
func main() {
logPath, _ := os.Getwd()
log := NewLoggerFp(logPath, 1, 2, 2)
log.Infof("sjkshfjsdfn")
log.Infof("sjkshfjsdfn")
log.Infof("sjkshfjsdfn")
}
func NewLoggerFp(logPath string, maxSize, maxBackUp, maxAge int) *zap.SugaredLogger {
w := zapcore.AddSync(&lumberjack.Logger{
Filename:   logPath + "/dump.log",
MaxSize:    maxSize, // megabytes
MaxBackups: maxBackUp,
MaxAge:     maxAge, // days
})
core := zapcore.NewCore(
zapcore.NewJSONEncoder(zap.NewProductionEncoderConfig()),
w,
zap.InfoLevel,
)
return zap.New(core).Sugar()
}

创建日志如何将时间戳添加到dump.log

我试图理解克里斯蒂安的建议。也许你可以试试这个。

w := zapcore.AddSync(&lumberjack.Logger{
Filename:   logPath + fmt.Sprintf("/dump-%v.log", time.Now().Format(time.RFC822)),
MaxSize:    maxSize, // megabytes
MaxBackups: maxBackUp,
MaxAge:     maxAge, // days
})

您是否使用较小的MaxSize(或MaxAge(参数进行了测试?

根据https://pkg.go.dev/gopkg.in/natefinch/lumberjack.v2#example-记录器。旋转,如果第一个文件存在并且小于MaxSize兆字节,Lumberjack将附加到该文件。当达到此限制时,会自动添加时间戳:

每当写入会导致当前日志文件超过MaxSize兆字节时,就会关闭、重命名当前文件,并使用原始名称创建新的日志文件。

备份使用给Logger的日志文件名,格式为name-timestamp.ext,其中name是不带扩展名的文件名,timestamp是日志随时间旋转格式化的时间。2006-01-02T15-04-05.000的时间格式,扩展名为原始扩展名。

例如,如果您的Logger。文件名为/var/log/foo/server.log,2016年11月11日下午6:30创建的备份将使用文件名/var/log/foo/server-2016-11-04T18-30-00.000.log

如果文件存在并且其大小为>=MaxSize兆字节,通过将当前时间放在文件扩展名前的名称中的时间戳中(如果没有扩展名,则放在文件名末尾(来重命名文件。然后使用原始文件名创建一个新的日志文件。

有一个打开的拉取请求,可以自定义时间戳格式:https://github.com/natefinch/lumberjack/pull/118

最新更新