我已经使用 logrotation 很多年了,从来没有想过它会有什么问题,直到我在 stackoverflow 上看到一个问题(https://stackoverflow.com/questions/1508734/disable-java-log-rotation/) 有人想禁用日志轮换。
对于我来说,我有手动清理构建服务器甚至生产服务器的经验,因为日志没有旋转并且磁盘用完了,并且机器突然停止了,这一切似乎都很疯狂,但我突然想到也许它毕竟不是那么明显。
那么日志轮换有什么好处?缺点又是什么(例如,可能更难调试/分析)?您觉得哪些工具对处理轮换日志文件有用?我猜是 Splunk,但还有什么?
答案1
我认为日志轮换的好处很明显:
- 您可以轻松管理较小的日志文件,而不是一个巨大的日志文件。
- 如果根据容量限制进行适当配置,则不会突然耗尽磁盘空间。(
size
选项) - 可以压缩较旧的日志文件,以便日志文件的大小变得更小,从而节省更多的磁盘空间。(
compress
选项)。 - 您可以按特定方式/时间轮换文件。例如,每个日志文件仅包含与特定日期相关的信息。如果您知道日期,这将使搜索更容易。如果您不知道日期,您可以搜索所有文件或其中的子集。(
daily
、monthly
等)。 - 您会自动删除非常旧的文件。例如,您最多可以保留 30 个文件。(
rotate 30
)。 - 您可以添加您喜欢的扩展名,例如旋转日期。(
dateext
)。 - 您可以在旋转之前/之后执行特定脚本。(
prerotate
,postrotate
)。
编辑:我在列表中添加了更多项目,并在适用时包含了选项。有关更多详细信息,man logrotate
可以查阅。
答案2
好处:
- 如果日志文件很大,您可以压缩或删除旧数据以避免填满磁盘
- 如果你知道某件事发生的时间,那么查找一天的日志文件会比查找一个永久日志文件更快
缺点:
- 如果要处理整个历史记录,则必须指定多个文件名
- 有些程序不支持旋转,如果你使用像 logrotate 这样的实用程序来旋转它,那么有一些边缘情况需要注意(例如,你必须使用截断选项,我认为这意味着你可能会丢失少量数据)
答案3
如果您考虑一下日志的用途,那么好处就更加明显了。抛开其他人和您自己提到的显而易见的观点。对我来说,最大的好处是我可以控制如何将日志输入到离线分析工具中。
我有各种各样的自制脚本用于分析日志 - 但据我所知,splunk 和各种 webloog 分析工具是唯一现成的“标准”工具。(不包括实时日志文件分析器,如 fail2ban)。