JBoss EAP 7.3中PeriodicSizeRotatingFileHandler未删除跨日旧日志求助
解决periodic-size-rotating-file-handler跨日日志不删除的问题
你遇到的问题根源在于periodic-size-rotating-file-handler的max-backup-index仅对当日生成的备份文件生效,跨日后的旧日期日志文件不会被纳入该计数范围,因此不会自动删除。以下是两种可行的解决办法:
方案一:改用size-rotating-file-handler
如果不需要按日期后缀归档日志,仅需按文件大小和总备份数量保留最新日志,直接替换为size-rotating-file-handler即可。这个处理器会统计所有备份文件的总数,超过max-backup-index时自动删除最旧的文件,跨日场景也能正常工作。
配置示例:
<size-rotating-file-handler name="FILE" autoflush="true"> <formatter> <named-formatter name="PATTERN"/> </formatter> <file relative-to="jboss.server.log.dir" path="server.log"/> <rotate-size value="10k"/> <max-backup-index value="5"/> <append value="true"/> </size-rotating-file-handler>
方案二:保留日期后缀+脚本定期清理
若必须保留带日期后缀的日志格式,可通过外部脚本定期清理旧日志,确保总文件数不超过预期。
示例Linux脚本(可加入crontab每日执行)
# 切换到JBoss日志目录 cd /path/to/your/jboss/server/log/dir # 保留最新的5个日志文件(包含当日的),删除更早的 ls -t server.log.* | tail -n +6 | xargs rm -f
如果需要同时结合日期过期和数量限制:
cd /path/to/your/jboss/server/log/dir # 删除7天前的日志文件 find . -name "server.log.*" -mtime +7 -delete # 确保总日志文件数不超过5个 ls -t server.log.* | tail -n +6 | xargs rm -f
内容的提问来源于stack exchange,提问作者josh
相关产品推荐
相关产品推荐

