Java Log4j2:RollingFile appender中的filePattern的属性替换工作不正确
我试图在Tomcat7.0.23中配置RollingFile appender,其中log4j2(2.0.2)包含10个日志文件 我在文件模式中使用${sys:catalina.base},它不起作用,日志文件放在tomcat/bin/${sys:catalina.base}/目录中 有趣的是,第一个日志文件(没有数字)是在tomcat/logs下创建的,这意味着它成功地将filename属性映射到实际路径 当我用filePattern=“C:/apache-tomcat-7.0.23/logs/app.%I.log”替换${sys:catalina.base}时,它可以工作Java Log4j2:RollingFile appender中的filePattern的属性替换工作不正确,java,logging,tomcat7,log4j2,rollingfileappender,Java,Logging,Tomcat7,Log4j2,Rollingfileappender,我试图在Tomcat7.0.23中配置RollingFile appender,其中log4j2(2.0.2)包含10个日志文件 我在文件模式中使用${sys:catalina.base},它不起作用,日志文件放在tomcat/bin/${sys:catalina.base}/目录中 有趣的是,第一个日志文件(没有数字)是在tomcat/logs下创建的,这意味着它成功地将filename属性映射到实际路径 当我用filePattern=“C:/apache-tomcat-7.0.23/logs
<?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>
这意味着没有正确解释文件模式
如何克服这个问题而不必静态地指定日志目录
感谢您的帮助您描述的内容与中报告的问题非常相似。这是2.0-RC2版本中引入的一个bug。它最近已在master中修复,该修复将包含在即将发布的2.1版本中。(我希望2.1将在下周某个时候发布——但没有承诺…)
如果您赶时间,可以在本地查看和2.1快照中的代码。我看到了完全相同的问题。我深入研究了源代码,发现filePattern与fileName的处理方式相同。。。然后我意识到我在Windows上使用“\”s。。。log4j不喜欢(不应该)。无论如何,在我的例子中,log4j不是问题,而是我的问题。2.1的发布过程已经开始,团队现在正在验证发布。如果没有找到ShowStopper,它应该在三天内可用。请参阅我上面的评论-这是我的错-而不是log4j的。无论如何我会给你赏金的:-)谢谢你的赏金!事实上,我认为这是(几天后就是)log4j的问题:如果这个bug没有被修复,那么像路径包含
${sys:user.home}
这样的常见用例将无法工作。有几个人遇到了这个问题,我很高兴这个问题不会很快成为问题。也许我们都有问题:-)@RemkoPopma谢谢你的帮助!