概述logrotate:删除超过n天的tomcat / jboss日志
我还没有find一个解决scheme来清除旧的Tomcat或JBoss日志或任何其他时间戳日志:catalog.log。 /server.log。 。 基本上这些日志是由jboss旋转为:server.log,server.log.20131201,server.log.20131203等等。
有没有一种方法可以使用logrotate删除n天以前的日志? 我不想在postrotate中使用find或者调整jboss / tomcat日志logging属性。 我只是想知道,如果logrotate可以真正实现它自己的。 我知道这不是很有效率,但我坚持一个问题,我需要为此回答。
在linux中守护进程日志logging
linux将所有sulogging到根消息
C#控制台日志logging:它会有内存问题?
禁用pythonlogging器输出
使用tar来压缩日志目录,当压缩期间apache尝试写入时会发生什么?
如果你不想在postrotate使用find ,不,你不能。
logrotate将每个由Tomcat / JBoss作为不同文件的server.log实例对待,并且由于它们是唯一的,所以logrotate将只旋转一次。 maxage – 删除大于n天的旋转日志的指令 – 仅在日志文件将被旋转时才被检查,所以maxage仅被执行一次,并且不能跟踪文件的年龄。
但是,如果您改变使用find的思路, logrotate可以帮助您简化由Tomcat和JBoss创建的日志文件的管理。 我用它来压缩和删除一个像这样的配置文件的旧文件:
/path/to/logs/server.log.????-??-?? { compress compresscmd /usr/bin/bzip2 nocreate nodateext ifempty missingok rotate 1 size 0 start 0 lastaction # Remove rotated files older than 180 days find /path/to/logs -name \’server.log.????-??-??.0.bz2\’ -mtime +180 -exec rm {} ; endscript }
哪里:
rotate 1并compress重命名并压缩,例如server.log.20131201到server.log.20131201.0.bz2 。 时间戳和.bz2扩展名之间的start 0来自start 0 。
size 0确保文件始终被重命名和压缩。
lastaction块删除180天以前的旋转文件。
logrotate可以管理你的日志旋转,并最终保留有限的旋转日志。 但是,AFAIK只能用于直接管理的日志。 如果你的日志已经被其他代理(例如Tomcat本身)旋转了,那么logrotate不能做任何事情,只是因为不知道其他东西所执行的旋转。
所以答案是否定的,你不能使用logrotate删除不是由自己管理的日志(我认为甚至不打算做这样的事情)。
你可以把脚本放到/etc/cron.daily。 例如:
猫/etc/cron.daily/tomcat-rotate-logs
#!/bin/sh # erasing tomcat logs older then 7 days for x in $(find /var/log/tomcat/ -type f -mtime +7); do rm \”$x\”; logger -t TOMCAT-ROTATE-LOGS \”Erasing $x [done]\”; done
或创建一个logrotate配置。 例如:cat /etc/logrotate.d/tomcat
/var/log/tomcat/*.log { su tomcat tomcat copytruncate daily rotate 6 compress missingok }
“su tomcat tomcat” – 代表错误的权限,避免logrotate错误
总结
以上是内存溢出为你收集整理的logrotate:删除超过n天的tomcat / jboss日志全部内容,希望文章能够帮你解决logrotate:删除超过n天的tomcat / jboss日志所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容