将log4j2配置文件配置为只将错误记录到文件中



我正在尝试适应log4j2,我已经创建了一个配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="LogToConsole" target="SYSTEM_OUT">
<PatternLayout pattern="%highlight{%d{HH:mm:ss.SSS} %-5level %logger{36}.%M() @%L - %msg%n}{FATAL=red blink, ERROR=red, WARN=yellow bold, INFO=green bold, DEBUG=blue bold, TRACE=blue}"/>
</Console>
<File name="LogToFile" fileName="src/test-output/logs/Results.log">
<PatternLayout pattern="%highlight{%d{HH:mm:ss.SSS} %-5level %logger{36}.%M() @%L - %msg%n}{FATAL=red blink, ERROR=red, WARN=yellow bold, INFO=green bold, DEBUG=blue bold, TRACE=blue}"/>
<append>false</append>
</File>
</Appenders>
<Loggers>
<Logger name="Tests" level="trace" additivity="false">
<AppenderRef ref="LogToConsole"/>
<AppenderRef ref="LogToFile"/>
</Logger>
<Root level="error">
<AppenderRef ref="LogToFile"/>
<AppenderRef ref="LogToConsole"/>
</Root>
</Loggers>
</Configuration>

我想要实现的是,只有错误被记录到文件中。请帮助我如何修改它以实现这样的配置。

有几种方法可以实现这一点。它们都涉及使用阈值过滤器。不同之处在于配置过滤器的位置。作为以下配置的替代方案,ThresholdFilter也可以放置在相应的Appender引用上。我应该注意的是,您只要求错误事件,所以下面的配置会过滤掉FATAL级别的事件。如果你也想要这些,你可以简单地删除FATAL的过滤器。此外,这也使对Appender引用的筛选变得更容易,因为您可以简单地将level="ERROR"添加到相应的Appender参考中。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="LogToConsole" target="SYSTEM_OUT">
<PatternLayout pattern="%highlight{%d{HH:mm:ss.SSS} %-5level %logger{36}.%M() @%L - %msg%n}{FATAL=red blink, ERROR=red, WARN=yellow bold, INFO=green bold, DEBUG=blue bold, TRACE=blue}"/>
</Console>
<File name="LogToFile" fileName="src/test-output/logs/Results.log" append="false">
<PatternLayout pattern="%highlight{%d{HH:mm:ss.SSS} %-5level %logger{36}.%M() @%L - %msg%n}{FATAL=red blink, ERROR=red, WARN=yellow bold, INFO=green bold, DEBUG=blue bold, TRACE=blue}"/>
<Filters>
<ThresholdFilter level="ERROR" onMatch="NEUTRAL" onMismatch="DENY"/>
<!-- This is only needed if ONLY error events are to be logged -->
<ThresholdFilter level="FATAL" onMatch="DENY" onMismatch="ACCEPT"/>
</Filters>
</File>
</Appenders>
<Loggers>
<Logger name="Tests" level="trace" additivity="false">
<AppenderRef ref="LogToConsole"/>
<AppenderRef ref="LogToFile"/>
</Logger>
<Root level="error">
<AppenderRef ref="LogToFile"/>
<AppenderRef ref="LogToConsole"/>
</Root>
</Loggers>
</Configuration>

最新更新