java - 如何仅在 log4j 中记录警告

标签 java properties log4j warnings

在 Struts 2 应用程序中,我们使用 log4j 进行日志记录。我只想记录警告,但是当我尝试在 log4j.properties 中使用时

log4j.rootLogger=warn, stdout

它也打印错误和致命日志。我只想要警告日志。我在一些教程中阅读了日志级别。所以我知道为什么错误和致命打印,因为它们的优先级低于警告。如何仅在我的控制台中打印警告日志?

我的Java代码:

import org.apache.log4j.Logger;

public class LogClass {

    private static final org.apache.log4j.Logger log = Logger.getLogger(LogClass.class);

    public static void main(String[] args) {
            log.trace("Trace");
            log.debug("Debug");
            log.info("Info");
            log.warn("Warn");
            log.error("Error");
            log.fatal("Fatal");
    }
}

任何帮助将不胜感激!

最佳答案

使用org.apache.log4j.varia.LevelRangeFilter筛选。您的 XML 配置文件可能是:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"
    debug="false">

    <appender name="warn-out" class="org.apache.log4j.FileAppender">
        <param name="File" value="warn.log" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%m%n" />
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMax" value="warn" />
            <param name="LevelMin" value="warn" />
            <param name="AcceptOnMatch" value="true" />
        </filter>
    </appender>

    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%m%n" />
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMax" value="warn" />
            <param name="LevelMin" value="warn" />
            <param name="AcceptOnMatch" value="true" />
        </filter>
    </appender>

    <root>
        <level value="warn" />
        <appender-ref ref="warn-out" />
        <appender-ref ref="console" />
    </root>
</log4j:configuration>

欲了解更多选项,请访问 here .

属性文件配置似乎不支持过滤器。以下内容摘自log4j的官方wiki:

Filter is not supported by PropertiesConfigurator.

编辑:向 XML 中添加了控制台附加程序,并关闭了 log4j 的调试。现在它应该转到文件和控制台。

关于java - 如何仅在 log4j 中记录警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26052623/

相关文章:

java - Azure Web应用程序写入和读取文件

Java:编码解码为.properties格式?

ios - 通知 iVar 值变化

java - 初始化 log4j 时的警告

java - 如何防止artifactId被附加到<SCM>连接URI?

java - 使用 Java 客户端使用 wcf 服务

c#-4.0 - 如何传递字符串类型的属性

java - 不同的日志位置取决于操作系统

maven - 在阴影 jar 中使用 log4j 的问题

java - 将 "this"从 Java 接口(interface)传递到另一个类