当前位置: 首页 > 知识库问答 >
问题:

LOG4J2:属性替换对RollingFile appender中的filePattern不正确

羊舌和安
2023-03-14

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

当我将${sys:catalina.base}替换为filePattern=“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个答案

满才
2023-03-14

您描述的内容与Log4J2-829中报告的问题非常相似。这是2.0-RC2版本中引入的一个bug。它最近在master中被修复,修复将包含在即将发布的2.1版本中。(我希望2.1能在下周某个时候发布--但没有promise……)

如果您很着急,可以从Log4j2 GIT存储库中签出代码,并在本地构建2.1快照。

 类似资料:
  • 我只是想知道有没有什么方法可以为log4j中的属性替换提供默认值呢? 我想在Java系统属性中传递文件路径,然后与“${env:MySystemProperty}”一起使用。但如果开发人员忘记设置此属性怎么办?那么我希望在log4j2.xml中定义一些有意义的默认值。 你知道如何实现这个功能吗? 编辑: 环境替换对我不起作用: standalone.conf log4j2.xml 我可以在wild

  • 我正在使用log4j2进行一个项目,我的log4j2中有一些值。可配置的属性。该项目还将包括其他组件的配置文件。理想情况下,我希望将所有配置保存在一个地方,以便能够在同一个文件中为log4j设置那些可配置的值,这样我就不会有两个不同的地方更改配置值(例如,包括环境变量)。 我在这方面找到的方法并不理想,比如让我的项目的其他部分从主配置文件中读取值,并将它们放入系统变量中,由log4j获取,因为我希

  • 我正在使用log4j2。 我想创建一个RollingFileAppender,它每天旋转日志文件。在应用程序启动之前,日志文件的名称是未知的(日志文件名是从应用程序配置组装而来的)。 这就是为什么我需要在运行时添加RollingFileAppender。 我有以下代码: 问题是这段代码完全没有改变什么。未向配置中添加追加器和记录器。以编程方式创建的“文件记录器”不可用。 执行上述代码后,我使用此代

  • 我在Spring Boot应用程序中使用mapstruct进行映射。我的源对象如下: 在源到目标对象的实际映射之前,我想用null替换所有字符串和源列表的空值(不需要手动映射)? 如何使用mapstruct或任何Java库来实现这一点?

  • 我使用的是log4j2 2.7版本,并且我配置了log4j2附加器,该附加器应每分钟滚动一次: 但由于一些未知的原因,我在日志翻转期间收到以下异常: 但如果我将%I更新为C://ssvp-api.log//api.%d{yyyymmdd.hhmm}-%I.log,则一切正常,但我不想在日志文件名中添加其他文件号(例如API.20180606.1448-1.log) 有没有机会避免在日志文件名中有文

  • 我正在使用log4j 2.4,并尝试将转换为,但是似乎不能使用log4j2.properties。 null 虽然以下文档https://logging.apache.org/log4j/2.x/manual/configuration.html#属性 清楚地表明 属性配置文件支持广告客户、monitorInterval、name、packages、shutdownHook、status 我也尝试