2014-09-26 74 views
2

在Struts 2应用程序中,我们使用log4j进行记录。我只想记录警告,但是当我尝试在我的log4j.properties中使用时,它会打印错误和致命日志。我只想警告日志。我在一些教程中阅读日志的级别。所以我知道为什么错误和致命打印,因为它们比警告更不重要。如何仅在我的控制台中打印警告日志?如何仅在log4j中记录警告

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

任何帮助将不胜感激!

+0

是否可以切换到XML配置文件而不是属性文件? – Voicu 2014-09-26 05:45:49

+0

@ voicu,好吧我会切换,如果我得到了解决方案在xml配置log4j – Madhesh 2014-09-26 05:47:33

回答

3

使用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:

过滤器不支持PropertiesConfigurator

编辑:增加控制台的appender,以及对XML和关闭调试的log4j的。现在它应该去文件和控制台。

+0

打印log4j:重置属性=“假”。 log4j:阈值=“空”。 log4j:root的级别值是[warn]。 log4j:根级别设置为警告 log4j:类名称:[org.apache.log4j.FileAppender] log4j:将属性[文件]设置为[warn.log]。 log4j:解析类的布局:“org.apache.log4j.PatternLayout” log4j:将属性[conversionPattern]设置为[%m%n]。 log4j:将属性[levelMax]设置为[WARN]。 log4j:将属性[levelMin]设置为[WARN]。 log4j:将属性[acceptOnMatch]设置为[true]。 log4j:将[class org.apache.log4j.varia.LevelRangeFilter]类型的过滤器添加到名为[warn-out – Madhesh 2014-09-26 05:56:45

+0

@Madhesh的appender中,您是否检查过'warn.log'文件? :) – Voicu 2014-09-26 06:06:09

+0

,我使用控制台appender,所以只有我得到了上述error.i改变你的答案为控制台appender.it的作品为我。谢谢 – Madhesh 2014-09-26 06:10:20