Wildfly 10周期性日志轮转:如何配置生成压缩日志文件?
解决WildFly 10日志轮转后生成压缩文件的问题
你当前使用的periodic-rotating-file-handler在WildFly 10中不支持直接压缩轮转后的日志文件,要实现压缩需求,有两种常用方案:
方案一:使用支持压缩的size-and-periodic-rotating-file-handler
这个handler同时支持按时间和文件大小轮转,并且自带压缩功能,既能满足你每日轮转+压缩的需求,还能避免单个日志文件过大(比如你提到的1.5-2GB)。
替换原有的handler配置为以下内容:
<size-and-periodic-rotating-file-handler name="FILE" autoflush="true"> <formatter> <named-formatter name="PATTERN"/> </formatter> <file relative-to="jboss.server.log.dir" path="server.log"/> <!-- 按日轮转,保持原后缀格式 --> <suffix value=".yyyy-MM-dd"/> <!-- 开启压缩,支持gzip或zip格式 --> <compression value="gzip"/> <!-- 可选:设置单文件大小上限,防止单日日志体积超标 --> <rotate-size value="1G"/> <!-- 可选:保留的日志文件数量,超过自动清理旧文件 --> <max-backup-index value="30"/> <append value="true"/> </size-and-periodic-rotating-file-handler>
关键配置说明:
<compression value="gzip"/>:指定压缩格式,WildFly 10支持gzip和zip两种,按需选择即可。<rotate-size value="1G"/>:如果单日日志超过1GB,会自动按大小分割并压缩,避免单文件体积过大。<max-backup-index value="30"/>:保留最近30天的压缩日志,自动清理更早的文件,可根据存储情况调整数值。
方案二:保留原有handler,配合定时任务压缩日志
如果你不想修改handler类型,可以保留原有的periodic-rotating-file-handler,然后添加系统定时任务(比如Linux的cron)来每日压缩前一天的日志文件。
示例cron任务(每天凌晨2点压缩前一天的日志):
0 2 * * * /bin/gzip /path/to/wildfly/standalone/log/server.log.$(date -d "yesterday" +\%Y-\%m-\%d)
注意替换
/path/to/wildfly为你的WildFly实际安装路径,同时确保执行cron的用户拥有日志文件的读写权限。
注意事项:
- 方案一更推荐,因为是WildFly原生支持的功能,无需额外维护定时任务,日志轮转和压缩的逻辑更精准可控。
- 修改配置后,需要重启WildFly或者通过CLI命令重新加载logging子系统配置才能生效。
内容的提问来源于stack exchange,提问作者Ravi Mitra Reddy
相关产品推荐
相关产品推荐

