2014-10-09 60 views
4

我试图在tomcat 7.0.23中配置带有10个日志文件的log4j2(2.0.2)的RollingFile appender。Log4j2:PropertyPattern在RollingFile appender中的属性替换工作不正确

我在filePattern中使用$ {sys:catalina.base},它不起作用,日志文件放在tomcat/bin/$ {sys:catalina.base} /目录中。

有趣的部分是,在tomcat/logs下创建了第一个日志文件(没有数字),这意味着它成功地将文件名属性映射到真实路径。

当我用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没有正确解释。

如何克服这个问题而不必静态指定日志目录?

感谢您的帮助

+0

我看到完全相同的问题。 – andersonbd1 2014-10-13 20:48:05

+0

我挖掘了源代码,并注意到filePattern与fileName的处理方式相同,然后我意识到我在Windows上并且正在使用“\”s ... log4j不喜欢(它不应该) T)。无论如何,在我的情况下,它是*不是*与log4j的问题 - 这是*我*的问题。 – andersonbd1 2014-10-16 19:53:44

回答

3

你描述的外观很像LOG4J2-829报告的问题。这是2.0-RC2版本中引入的一个错误。它最近在大师中修复,修复将包含在即将发布的2.1版本中。 (我希望将2.1下周公布的一段时间 - 但没有承诺......)

如果你赶时间,你可以从Log4j2 GIT repositorybuild 2.1-SNAPSHOT本地检查出的代码。

+2

2.1的发布过程已经开始,团队现在正在验证发布。如果没有找到showstoppers,它应该在三天内提供。 – 2014-10-20 08:11:38

+0

看到我上面的评论 - 这是我的错 - 不是log4j的。无论如何,我会给你赏金:-) – andersonbd1 2014-10-20 17:35:12

+2

感谢您的赏金!我实际上认为它是_is_(几天后,_was_)log4j的问题:如果这个错误没有被修复,那么常见的用例如包含'$ {sys:user.home}'的路径将不起作用。有几个人遇到了这个问题,我很高兴这不会很快成为问题。 – 2014-10-20 23:34:17