java - JAVA:当日志文件要翻转时在应用程序中暂停
问题描述
我正在使用 Wildfly 9 和 slf4j(slf4j-api-1.7.21.jar)/log4j(log4j-1.2.17.jar)。当文件要翻转时,我在应用程序中暂停。
我在standalone.xml 中的日志配置如下:
<subsystem xmlns="urn:jboss:domain:logging:3.0">
<console-handler name="CONSOLE">
<level name="INFO" />
<formatter>
<named-formatter name="COLOR-PATTERN" />
</formatter>
</console-handler>
<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="30m" />
<max-backup-index value="10000" />
<append value="true" />
</size-rotating-file-handler>
<size-rotating-file-handler name="APPLICATION" autoflush="true">
<formatter>
<pattern-formatter pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %m%n" />
</formatter>
<file relative-to="jboss.server.log.dir" path="application.log" />
<rotate-size value="30m" />
<max-backup-index value="10000" />
<append value="true" />
</size-rotating-file-handler>
<logger category="com.company" use-parent-handlers="true">
<level name="INFO" />
<handlers>
<handler name="APPLICATION" />
</handlers>
</logger>
<root-logger>
<level name="INFO" />
<handlers>
<handler name="CONSOLE" />
<handler name="FILE" />
</handlers>
</root-logger>
<formatter name="PATTERN">
<pattern-formatter pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n" />
</formatter>
<formatter name="COLOR-PATTERN">
<pattern-formatter pattern="%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n" />
</formatter>
</subsystem>
对此问题有任何建议/配置吗?
解决方案
简单的建议:降低max-backup-index
到较低的值。
max-backup-index=10000
意味着在翻转时,日志框架必须:
- 删除
server-9999.log
- 重命名
server-9998.log
为server-9999.log
- 重命名
server-9997.log
为server-9998.log
- ...
- 重命名
server.log
为server-1.log
只有这样它才能创建一个新的server.log