我使用以下旋转日志来自 Apache 的命令:
/usr/sbin/rotatelogs /var/log/somelogfile 1GB
如果我向它发送 1GB 的内容(用于测试),它会生成以下文件:
somelogfile.1706304578 285'867'200 10:29:38
somelogfile.1706304579 375'848'960 10:29:39
somelogfile.1706304580 437'027'357 10:29:40
所有文件大小的总和确实是 1GB,但为什么要旋转 3 次?我预计会创建一个 1GB 的文件。
另外:它生成的文件的大小和数量似乎是随机的(例如:我最终可能会得到 4 个文件,有时是 2 个......)
有一个冗长将重定向一些输出的模式STDERR
:
rotatelogs -v
它应该提供有关日志轮换原因的信息。但是我不确定如何检索发送到的内容STDERR
。我尝试了这个命令:
rotatelogs /var/log/somelogfile 1GB -v 2> /tmp/error.txt
但没有成功(rotatelogs 不会启动)
答案1
我发现了错误之处:
/usr/sbin/rotatelogs /var/log/somelogfile 1GB
应该
/usr/sbin/rotatelogs /var/log/somelogfile 1G
感谢布赖恩感谢他对 STDERR 的评论。
以下是我的发现:
启用详细模式
LogFile "|/usr/sbin/rotatelogs -v /var/log/somelogfile ..."
然后检查日志文件:
journalctl -u httpd.service --since "5min ago"
就我而言,我得到了这个:
Rotation size interval: 1
...
File rotation needed, reason: Maximum size reached
File rotation needed, reason: Maximum size reached
File rotation needed, reason: Maximum size reached (hundred of times)
...
理论上,它应该创建 1'073'741'824 个 1 字节的文件,但实际上只创建了 3-4 个几百 MB 的文件。