语境
我需要使用设计欠佳的Java应用程序,该应用程序在运行时会记录很多信息。在标准用法下,它将每小时创建100 MB的日志。
我不需要历史日志,目前看来logrotate实用程序无法跟上它的步伐,因为它运行得不够频繁。该应用程序是封闭源代码,并将其自己的日志旋转到大约36MB。
我的Linux发行版是RHEL7。
问题
我想通过压缩和旋转原木来减少浪费的空间。
这是我尝试的logrotate文件:
# cat /etc/logrotate.d/cis_assessor
/usr/share/foreman-proxy/Ansible/CIS/audit/Assessor-CLI-4.0.2/logs/assessor-cli.log {
missingok
notifempty
compress
rotate 5
size 30M
此logrotate作业需要捕获30MB和36MB之间的日志才能真正生效,这可能只有10秒的时间。这就是为什么我要问没有logrotate的压缩和删除文件的手动路径。
由于该应用程序已将日志拆分成新文件,是否可以自动压缩目录中的新创建文件?
是的。只需使用可以监视目录中新文件的内容(例如entr
)定位新创建的文件
因此,您将像这样创建一个logrotate配置(/etc/logrotate.d/newlogrotateconf
)
/usr/share/foreman-proxy/Ansible/CIS/audit/Assessor-CLI-4.0.2/logs/assessor-cli.log {
missingok
notifempty
compress
rotate 5
}
然后,您将entr
在目录中循环运行以绑定logrotate
到inotify
/ epoll
,
echo -n /usr/share/foreman-proxy/Ansible/CIS/audit/Assessor-CLI-4.0.2/logs/
| ./entr -dnc logrotate --force /etc/logrotate.d/newlogrotateconf
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句