当前位置: 代码迷 >> java >> Log4j:如何解决警告:无法识别的元素 - 滚动策略,触发策略
  详细解决方案

Log4j:如何解决警告:无法识别的元素 - 滚动策略,触发策略

热度:77   发布时间:2023-07-16 17:51:34.0

我的 Java 项目包含以下包 - com.main.log4j.main 、 com.main.log4j.other。

根据我的要求,我必须从控制台中排除包“com.main.log4j.other”的所有日志行并创建一个新的日志文件“OTHER_LOG.log”

下面的 config.xml 工作正常。

现在,我想要,如果它(“OTHER_LOG.log”)超过特定大小,比如说 1 MB,它会创建新文件,保留以前的文件作为备份,但带有时间戳。

就像,“OTHER_LOG.20190221155085.log”

这就是为什么我添加了“rollingPolicy”、“triggeringPolicy”。

但它发出警告 -
log4j:WARN 无法识别的元素rollingPolicy
log4j:WARN 无法识别的元素触发策略

<appender name="CONSOLE-LOG" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="..." />
</layout>
 </appender>
 <appender name="OTHER-LOG"
    class="org.apache.log4j.FileAppender">
    <param name="Threshold" value="DEBUG" />
    <param name="File" value="logs/OTHER_LOG.log" />
    <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
        <param name="fileNamePattern" value="logs/OTHER_LOG.%d{yyyyMMddHHmmss}.%i.log" />
    </rollingPolicy>
    <triggeringPolicy class="org.apache.log4j.rolling.SizeBasedTriggeringPolicy">
        <param name="maxFileSize" value="1000000" />
    </triggeringPolicy>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="..." />
    </layout>
</appender>

<category name="com.main.log4j.other" additivity="false">
   <appender-ref ref="OTHER-LOG" />
</category>
<root>
<level value="debug" />
   <appender-ref ref="CONSOLE-LOG" />
</root>

我尝试过 log4j 版本 - 1.2.16,1.2.17 仍然收到警告,我的目的没有实现。 请让我知道我在哪里做错了。

对于 OTHER_LOG appender,我使用了org.apache.log4j.FileAppender ,但rollingPolicy不适用于 FileAppender,而我们应该使用org.apache.log4j.rolling.RollingFileAppender