如何记录仅在log4j中发出警告 [英] How to log warn only in log4j

查看:75
本文介绍了如何记录仅在log4j中发出警告的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

In Struts 2 application we use log4j for logging. I want to log only warn but when i try to use in my log4j.properties

log4j.rootLogger=warn, stdout

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

it prints error and fatal log too. I want only warn log. I read the levels of log in some tutorials. So I know why error and fatal prints, because they are less priority than warn. How to print warn log only in my console?

我的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");
    }
}

任何帮助将不胜感激!

推荐答案

使用

Use the org.apache.log4j.varia.LevelRangeFilter filter. Your XML configuration file could be:

<?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的官方Wiki:

It looks like properties file configuration does not support filters. The following is taken from log4j's official wiki:

PropertiesConfigurator .

Filter is not supported by PropertiesConfigurator.

编辑:向XML添加了控制台附加程序,并关闭了log4j的调试功能.现在应该同时进入文件和控制台.

EDIT: Added console appender as well to the XML and turned off debug for log4j. Now it should go to both file and console.

这篇关于如何记录仅在log4j中发出警告的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆