gookit / slog

📑 Lightweight, configurable, extensible logging library written in Go. Support multi level, multi outputs and built-in multi file logger, buffers, clean, rotate-file handling.一个易于使用的,轻量级、可配置、可扩展的日志库。支持多个级别,输出到多文件;内置文件日志处理、自动切割、清理、压缩等增强功能

Home Page:https://pkg.go.dev/github.com/gookit/slog

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

旋转器在天数变幻时会先输出再创建新的文件

pya789 opened this issue · comments

微信截图_20230201163348

今天是1月31号,程序运行时更改本地时间为2月1号后会先在旧文件内输出再创建新文件

是指旧文件也有一样的日志行吗?

是指旧文件也有一样的日志行吗?

不,意思是在日期改变后,会先在锁定的文件内输出才会建立新的文件把旧文件旋转。
比如今天是2月1号,输出一条2月1号打印的日志后才会把1月31号的文件旋转导致这条2月1号输出的日志显示在1月31号的文件里

:) 哦 。。。 是先写了文件再处理的旋转。

有几行应该也没啥影响吧。我在写入之前处理旋转,也可能造成1月31日的到2月1号的文件里

这个影响不大。还有是这个是1月31号的文件但旋转后是2月1日 虽然可以理解为旋转执行时间但感觉上是有点别扭emmm。。。另外旋转时也不会处理maxSize切割或压缩后的文件。。有点尴尬。serilog那种以日期为文件名的解决方案好像好一点这样可以根据文件名一起压缩

这个影响不大。还有是这个是1月31号的文件但旋转后是2月1日 虽然可以理解为旋转执行时间但感觉上是有点别扭emmm。。。另外旋转时也不会处理maxSize切割或压缩后的文件。。有点尴尬。serilog那种以日期为文件名的解决方案好像好一点这样可以根据文件名一起压缩

以日期为文件名的解决方案 - 是指创建文件时就按规则创建吗

这个影响不大。还有是这个是1月31号的文件但旋转后是2月1日 虽然可以理解为旋转执行时间但感觉上是有点别扭emmm。。。另外旋转时也不会处理maxSize切割或压缩后的文件。。有点尴尬。serilog那种以日期为文件名的解决方案好像好一点这样可以根据文件名一起压缩

以日期为文件名的解决方案 - 是指创建文件时就按规则创建吗

是的,例如输入path时直接留空logs/info/.log如果留空就直接输出20230201.log这种文件 切割时可以20230201.log.0001 时间变化开始旋转时可以将所有base为20230201的全部压缩成一个包 再删除多余的文件 生成新的20230202.log 当然我只是一个建议...因为感觉现在这个情况时间旋转和切割契合的很不好0.0

commented

发了 v0.5.2 旋转文件新增了模式:

// eg: 
handler.WithRotateMode(rotatefile.ModeCreate)

设置为 ModeCreate 模式时,配置 logfile 为 /path/error.log, 实际不会创建这个文件,会按照实际分割时间来创建:

/path/error.log.20230618_1500
/path/error.log.20230618_1600
/path/error.log.20230618_1700
...