我正在尝试使用带有10个日志文件的log4j2(2.0.2)在tomcat 7.0.23中配置RollingFile附加程序。
我在$ {sys:catalina.base}的filePattern中使用,它不起作用,日志文件放置在tomcat / bin / $ {sys:catalina.base} /目录中。
有趣的是,在tomcat / logs下创建了第一个日志文件(没有数字),这意味着可以成功地将filename属性映射到真实路径。
当我用filePattern =“C:/apache-tomcat-7.0.23/logs/app.%i.log”替换$ {sys:catalina.base}时,它可以工作。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="CONSOLE" target="SYSTEM_OUT">
<PatternLayout pattern="%d %-5p [%X{REQ_ID}] [%c{1}] %m%n"/>
</Console>
<RollingFile name="FILE" fileName="${sys:catalina.base}/logs/app.log"
filePattern="${sys:catalina.base}/logs/app.%i.log">
<PatternLayout pattern="%d %-5p [%X{REQ_ID}] [%c{1}] %m%n"/>
<Policies>
<SizeBasedTriggeringPolicy size="10 MB" />
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile>
</Appenders>
<Loggers>
<Root level="info">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</Root>
</Loggers>
</Configuration>
这意味着无法正确解释filePattern。
如何克服此问题而不必静态指定日志目录?
谢谢您的帮助
最佳答案
您所描述的内容非常类似于LOG4J2-829中报告的问题。这是2.0-RC2版本中引入的错误。它是最近在master中修复的,并且该修复将包含在即将发布的2.1版本中。 (我希望2.1在下周的某个时候发布-但没有希望...)
如果您赶时间,可以从本地2.1-SNAPSHOT的Log4j2 GIT repository和build中检出代码。