我希望log4j2创建的日志文件在其文件名中包含日期模式,包括当前活动文件。也就是说,如果今天的日期是2016-12-15,我希望当前的日志文件是lager-2016-12-15.log。当日期改变时,我想要创建一个名为lager-2016-12-16.log的新文件。
使用RollingFileAppender
我无法让当前活动日志文件在文件名中包含日期模式。我的Log4j2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Properties>
<Property name="layoutPattern">%d{ISO8601} [%t] %-5p [%X{REQUEST_ID}] [%X{CLIENT_ID}] [%X{USER_ID}] %c- %m%n</Property>
<Property name="logDir">${sys:catalina.home}/logs/</Property>
<Property name="fileName">${logDir}lager-${date:yyyy-MM-dd-HHmm}.log</Property>
<Property name="filePattern">${logDir}lager-%d{yyyy-MM-dd-HHmm}.log</Property>
</Properties>
<Appenders>
<RollingFile name="LAGER" append="true"
fileName="${fileName}"
filePattern="${filePattern}">
<PatternLayout pattern="${layoutPattern}" charset="UTF-8"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
</RollingFile>
</Appenders>
<loggers>
<Logger name="org.apache.catalina.core.ContainerBase.[Catalina].[localhost]" level="WARN" additivity="false">
<AppenderRef ref="LAGER" />
<AppenderRef ref="CONSOLE"/>
</Logger>
<Root level="INFO">
<AppenderRef ref="LAGER"/>
<AppenderRef ref="CONSOLE"/>
</Root>
</loggers>
</Configuration>
使用此配置,翻转时的复制会搞砸。从fileName属性中删除日期模式会修复此问题,但当前文件的名称中没有日期。
我在tomee 7.0.1上运行它。
答案 0 :(得分:1)
可能已经有一个突出的功能请求。这符合您的要求吗? https://issues.apache.org/jira/browse/LOG4J2-1101
如果是这样,请评论该JIRA票。如果您能够提供补丁(理想情况下是单元测试),则可能会很快得到解决。