在 GO 中滚动日志文件的最佳方法

And*_*nov 3 logging go

在生产中使用 go 语言的人是否面临滚动日志文件的问题?

有没有可能安全地滚动日志文件线程?

是否有任何框架可以做到这一点?

谢谢你。

小智 6

我在https://github.com/natefinch/lumberjack 上取得了很好的成功,它是轻量级的,并且搭载了 golang 的标准和内存高效的“日志”pkg。

使用非常简单,只需添加一行代码即可设置,并正常使用日志:

log.SetOutput(&lumberjack.Logger{
    Filename:   "/var/log/myapp/foo.log",
    MaxSize:    500, // megabytes
    MaxBackups: 3,
    MaxAge:     28, //days
})
Run Code Online (Sandbox Code Playgroud)


Dav*_*rth 5

我倾向于采用12 Factor方法记录到 std 错误并让其他东西处理轮换。

然后,你可以选择系统旋转你的日志,如被提及这里