每当我启动服务时,我都想进行日志文件轮换,但从不“自动”。
我正在运行一个基于 python 的服务,该服务记录到特定的日志文件。该服务(当前)不支持重新打开其日志文件的通知(例如USR1
陷阱)。此外,不能为日志文件轮换重新启动该服务(它会产生连续的音频流,不应中断)。
我正在运行的系统没有硬件时钟,因此每次系统启动时都会重置时钟,这使得源自同一文件中不同重启的日志条目很乏味(我多次获得相同的日期)。
我还想保留各种靴子的历史。
所以这个想法是在每次启动时(仅)使用日志轮换。
在启动服务之前运行之类的东西/usr/sbin/logrotate --force /etc/logrotate.d/myservice
应该可以解决问题。
现在我的问题是,是否可以通过/etc/logrotate.d/myservice
这种方式配置 log-rotationg,使其永远不会自动运行?
一个简单的解决方案是不将我的 logrotate-config 文件存储在 中/etc/logrotate.d/
,而是“在其他地方”。
但是,我想让我的用户能够在一个众所周知的地方找到 logrotate-config(这样他们就可以随意修改配置)。
您可以将 logrotate 配置为通过 copy-truncate 轮换文件,这会保留原始文件并且不需要您重新创建日志文件。
语法是:
这将复制当前文件,然后
cat /dev/null > file
话虽如此,除非另有配置,否则 logrotate 只会“自动”旋转特定位置的文件。我想你正在将你的脚本记录到 /var/log/httpd,这就是它被自动轮换的原因。
如果您不想/不需要使用它,为什么还要使用 logrotate?
只需从您的启动脚本轮换日志文件。