Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何仅在log4j中记录警告_Java_Properties_Log4j_Warnings - Fatal编程技术网

Java 如何仅在log4j中记录警告

Java 如何仅在log4j中记录警告,java,properties,log4j,warnings,Java,Properties,Log4j,Warnings,在Struts2应用程序中,我们使用log4j进行日志记录。我只想记录警告,但当我尝试在log4j.properties中使用时 log4j.rootLogger=warn, stdout 它还打印错误和致命日志。我只想要警告日志。我在一些教程中阅读了日志级别。所以我知道为什么错误和致命打印,因为它们的优先级比警告低。如何仅在我的控制台中打印警告日志 我的Java代码: import org.apache.log4j.Logger; public class LogClass {

在Struts2应用程序中,我们使用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");
    }
}
任何帮助都将不胜感激

使用过滤器。您的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>

属性文件配置似乎不支持筛选器。以下内容摘自log4j的官方维基:

筛选器不受支持


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

是否可以切换到XML配置文件而不是属性文件?@voicu,好的,如果我在log4jI的XML配置中得到了解决方案,我将切换到log4j2,我使用log4j2,如何在log4j2 XML配置中应用LevelRangeFilter打印log4j:reset attribute=“false”。log4j:Threshold=“null”。log4j:根目录的级别值为[warn]。log4j:根级别设置为警告log4j:类名:[org.apache.log4j.FileAppender]log4j:将属性[file]设置为[WARN.log]。log4j:解析类的布局:“org.apache.log4j.PatternLayout”log4j:将属性[conversionPattern]设置为[%m%n]。log4j:将属性[levelMax]设置为[WARN]。log4j:将属性[levelMin]设置为[WARN]。log4j:将属性[acceptOnMatch]设置为[true]。log4j:将类型为[classorg.apache.log4j.varia.LevelRangeFilter]的筛选器添加到名为[warn]的appender中-out@Madhesh,您是否检查了
warn.log
文件?:),我使用console appender,因此只有我收到上述错误。我将您的答案更改为console appender。这对我有效。谢谢