【发布时间】:2017-02-16 06:06:26
【问题描述】:
Log4j2 RollingFile appenders 冲突
以下是我们的 log4j2 配置文件的简化调试版本(我们不是每分钟每晚滚动一次!)。
此配置,而不是每分钟创建一个滚动文件
(根据 TimeBasedTriggeringPolicy)将创建一个翻转文件(非 tarred),包含 JSON 格式的日志记录,每 20KB 将被覆盖一次
(尽管它最终会略大于 20KB (See Screenshot)。
我们还收到以下错误(缩写用“...”):-
2016-10-07 08:47:34,433 default-workqueue-4 ERROR Unable to copy file /.../logs/logFile-2016-10-07-08:47:11.log to /.../logs/logFile-2016-10-07-08:47:11.log: java.nio.file.NoSuchFileException /.../logs/logFile-2016-10-07-08:47:11.log
如果我们切换 timeBasedRollingFileJsonLayout appender 和 sizeBasedRollingFilePatternLayoutWithZippedArchive appender 的顺序,则根本不会发生翻转。
如果我们删除 sizeBasedRollingFilePatternLayoutWithZippedArchive 附加程序,那么 timeBasedRollingFileJsonLayout 附加程序将按预期工作。
对于不同的环境,我们有两个不同的附加程序,其中日志可能会或可能不会连接到 ELK。
在我们真正的 log4j2 配置文件中,我们使用属性来为环境选择合适的附加程序。
为清楚起见,我已从该文件中删除了这些属性,并将它们排除为问题的可能原因。
我们正在使用 log4j 2.6.2。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %logger{36} - %msg %n" />
</Console>
<RollingFile name="timeBasedRollingFileJsonLayout" append="true" fileName="logs/logFile.log" filePattern="logs/logFile-%d{yyyy-MM-dd-HH:mm}.log">
<JSONLayout properties="true" compact="true" eventEol="true" />
<Policies>
<TimeBasedTriggeringPolicy />
</Policies>
</RollingFile>
<RollingFile name="sizeBasedRollingFilePatternLayoutWithZippedArchive" append="true" fileName="logs/logFile.log" filePattern="logs/logFile-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %logger{36} - %msg %n" />
<Policies>
<SizeBasedTriggeringPolicy size="20KB" />
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<logger name="logger.one" level="info" additivity="false">
<AppenderRef ref="timeBasedRollingFileJsonLayout" />
</logger>
<Logger name="logger.two" level="info" additivity="false">
<AppenderRef ref="timeBasedRollingFileJsonLayout" />
</Logger>
<Logger name="logger.three" level="info" additivity="false">
<AppenderRef ref="timeBasedRollingFileJsonLayout" />
</Logger>
<Root level="info">
<AppenderRef ref="timeBasedRollingFileJsonLayout" level="all" />
</Root>
</Loggers>
</Configuration>
【问题讨论】:
标签: log4j2