2014-09-26 42 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