log4j2 monitorInterval在记录器级别更改时未重新加载配置

问题描述

我正在尝试使用log4j2.xml文件中的monitorInterval参数制作一个应用程序,当文件更改时,我正在尝试重新配置日志记录设置。 我当然在像这样的Configuration标签中使用参数表:

<Configuration packages="confidential"
           monitorInterval="5">

如果我更改了appenders文件名,它的确会创建一个文件以使用适当的名称进行追加。它会在设置的时间间隔后执行此操作。但是之后,log4j继续将日志消息写入旧文件,而新文件仅包含:

# Logging Started at 2020-10-20 17:03:28,405

我曾尝试更改记录器的记录级别(认WARN,尝试了ALL,TRACE,INFO,ERROR)和模式布局中的信息顺序,但是log4j也忽略了这一点。

该应用程序使用自定义文件追加程序,自定义模式布局,并以编程方式加载conf文件。在我将以编程方式加载的文件名更改为认的log4j2.xml之前,更改附加程序文件名不起作用。

这是一个示例附加程序:

<CustomrollingFileAppender name="applogs_appender" fileName="logs/app/app.log">
    <SizeBasedTriggeringPolicy size="5MB"/>
    <DefaultRolloverStrategy max="5" />
    <HeaderedPatternLayout pattern="[%d{yyyy-MM-d HH:mm:ss,SSS}] [%p] [%c] [%t] %m%n" />
    <!-- %d - date %p - level %c - category (logger name) %t - name of the
        thread that generated the logging event %m - message %n - new line separator
        CHAINSAW settings: fileUrl: file:///<path to log file> logFromat: [TIMESTAMP]
        [LEVEL] [LOGGER] [THREAD] [CLASS]MESSAGE -->
</CustomrollingFileAppender>

还有一个示例记录器:

<Logger name="TOPO" additivity="false" level="WARN">
    <AppenderRef  ref="applogs_appender" />
</Logger>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)