log4j 为元素RollingFile提供的参数无效:字段“filePattern”具有无效值“null”,字段“policy”具有无效值“null”

dtcbnfnu  于 2023-03-18  发布在  其他
关注(0)|答案(1)|浏览(651)

将Log4j 1.2.17版本迁移至Log4j 2.20.0版本。

log4j2.xml - XML配置文件

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <!-- RollingFile filePattern="logs/$${date:yyyy-MM}/app-%d{yyyy-MM-dd}-%i.log.gz" is also not set here. I do want the log files not be rolled automatically. -->
        <RollingFile name="RollingFile"
                     fileName="logs/app.log">
            <PatternLayout>
                <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
            </PatternLayout>
<!--      I do not want to specify any Policies. So, Policies are not set here      -->
<!--            <Policies>-->
<!--                <SizeBasedTriggeringPolicy size="10 MB"/>-->
<!--            </Policies>-->
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="trace">
            <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
</Configuration>

滚动文件“文件模式”属性

据我所知,RollingFile的“filePattern”属性是可选的。如果不指定filePattern属性,日志文件将不会自动滚动,也不会被删除。RollingFile附加器有一个可选的filePattern属性,允许您指定日志文件的名称模式。此名称模式可用于根据日志文件的大小、日期如果不指定filePattern,日志文件将保持相同的名称,并且不会滚动。

滚动将策略元素归档。

据我所知,Policies元素是可选的。如果不指定Policies元素,则不会自动滚动日志文件,也不会删除日志文件。如果不指定Policies元素,则不会自动滚动日志文件,也不会删除日志文件。
但是,我发现以下异常。如何修复它?

org.apache.logging.log4j.core.config.ConfigurationException: Arguments given for element RollingFile are invalid: field 'filePattern' has invalid value 'null', field 'policy' has invalid value 'null'
nkoocmlb

nkoocmlb1#

我就是这样解决这个问题的。
我参考了下面的教程并定制了示例XML配置。

3.2.滚动“每日”部分。

https://howtodoinjava.com/log4j2/log4j2-rollingfileappender-example/

<?xml version="1.0" encoding="UTF-8"?>
<RollingFile
  name="rollingFile"
  fileName="${LOG_DIR}/application.log"
     filePattern="${LOG_DIR}/application.%d{yyyy-MM-dd}.log.gz"
  ignoreExceptions="false">
  <PatternLayout>
      <Pattern>%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n</Pattern>
  </PatternLayout>
  <Policies>
      <TimeBasedTriggeringPolicy interval="1"/>
  </Policies>

</RollingFile>

我必须指定filePattern属性和TimeBasedTriggeringPolicy。

相关问题