将 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 References 上。我应该注意到您只要求错误事件,因此下面的配置过滤掉了 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>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

找不到log4j2配置文件。使用默认配置:仅将错误记录到控制台

Log4j2:将错误级别记录到特定文件中

Log4j2 - 无法将日志写入文件

如何:将Tomcat 9配置为通过Log4j2进行记录

将LogStash Log4j配置升级到Log4j2

将log4j2用于多个类别

将jmeter依赖项添加到我的pom.xml中时,获取log4j错误ERROR StatusLogger“未找到log4j2配置文件”

如何尝试将Log4j2记录到我的日志文件中,我已经尝试了所有可以想到的问题,这可能是Linux中的配置问题吗?

Logback:如何仅将错误记录到文件

如何将 log4j2 写入的文件的命名推迟到文件打开时?

在Log4j2中,如何将XML模式与log4j2.xml关联?

Logback:仅将错误从log4j记录到文件

将输出发送到文件时出现log4j2问题

Log4j2:如何为每个用户将日志写入单独的文件?

Log4j2滚动文件将覆盖现有日志

Log4j2将日志写入已滚动的文件

log4j2 配置记录到文件但不记录到控制台

将第3方库的Log4j日志路由到Log4j2

Log4j2:将某些字符串添加到每个记录的行

如何将log4j2配置为在启动时带有时间戳的过渡?

找不到log4j2配置文件

log4j2找不到配置文件

找不到log4j2配置文件

如何在Log4j2中将追加器添加到Logger

将hazelcast 日志重定向到log4j2 日志

如何使用 log4j2 将批量数据发送到 elasticsearch

使用log4j2将日志发送到Kafka

如何将字段添加到log4j2的JSON日志

将 Tomcat 9 servlet 异常日志重定向到 log4j2