如何在 wildfly 中使用 size-rotating-file-handler 旋转和压缩日志文件?

How to rotate and zip log file using size-rotating-file-handler in wildlfy?

我们想使用 wildfly 的日志记录子系统中可用的大小旋转文件处理程序来进行基于大小的旋转和压缩。但是我们可以旋转文件但不能进行压缩或 zip 。 wildfly 中是否有任何替代方案,以便我们可以同时实现日志轮换和压缩?

我们已经遵循并尝试了以下 link 但没有得到任何运气: https://developer.jboss.org/thread/278779

注意:我们使用的是wildlfy-14版本。

我们使用了以下 CLI 配置:

/profile=full-ha/subsystem=logging/periodic-rotating-file-handler=FILE:remove()
/profile=full-ha/subsystem=logging/size-rotating-file-handler=FILE:add(name=FILE,autoflush=false,file={relative-to=jboss.server.log.dir,path=server.log},append=true,named-formatter=PATTERN,rotate-size=10m,max-backup-index=15,level=DEBUG)
/profile=full-ha/subsystem=logging/logger=org.hibernate.orm.deprecation:add(level=ERROR)

您需要将 suffix=".zip" 属性添加到您的添加命令。然而,有一个 bug 阻止了它的工作,直到 WildFly 16 才修复。

解决方法是使用 custom-handler,我认为这并不理想,但可行。

/profile=full-ha/subsystem=logging/custom-handler=FILE:add(module=org.jboss.logmanager, \
    class="org".jboss.logmanager.handlers.SizeRotatingFileHandler, \
    named-formatter=PATTERN, level=DEBUG, \
    properties={ \
        autoFlush=true, \
        append=true, \
        rotateSize=10485760, \
        maxBackupIndex=15, \
        fileName=${jboss.server.log.dir}/server.log, \
        suffix=".zip" \
    })

另一种选择是升级到 WildFly 16 :)