Log4j2:对于RollingFile appender中的filePattern,属性替换工作不正确

时间:2014-10-09 17:46:54

标签: java logging tomcat7 log4j2 rollingfileappender

我正在尝试使用带有10个日志文件的log4j2(2.0.2)在tomcat 7.0.23中配置RollingFile appender。

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

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

当我用filePattern =&#34替换$ {sys:catalina.base}时; C:/apache-tomcat-7.0.23/logs/app.%i.log"有用。

<?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。

如何在不必静态指定日志目录的情况下克服此问题?

感谢您的帮助

1 个答案:

答案 0 :(得分:3)

您所描述的内容与LOG4J2-829中报告的问题非常相似。这是2.0-RC2版本中引入的错误。它最近在master中修复,修复程序将包含在即将发布的2.1版本中。 (我希望2.1将在下周某个时候发布 - 但没有承诺......)

如果您赶时间,可以在本地查看Log4j2 GIT repositorybuild 2.1-SNAPSHOT的代码。