2009-06-17 55 views
6

在log4j的,是有辦法有logger.error(「」)和logger.debug(「」)包括不同的輸出佈局?用於調試和錯誤的不同log4j佈局?

我想錯誤,包括方法名和行號,這兩個減慢應用程序的性能。

編輯:

加入Apache的log4j的-演員後,下面的配置文件的工作。

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" > 

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 

    <appender name="WARNINGS" class="org.apache.log4j.DailyRollingFileAppender"> 
     <param name="File" value="warnings.log"/> 
     <param name="DatePattern" value="'.'yyyy-MM-dd"/> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d{yyyy-MMM-dd HH:mm:ss} %-5p %c - %m%n%n"/> 
     </layout> 
     <filter class="org.apache.log4j.filter.LevelRangeFilter"> 
      <param name="LevelMin" value="DEBUG"/> 
      <param name="LevelMax" value="WARN"/> 
     </filter> 
    </appender> 

    <appender name="ERRORS" class="org.apache.log4j.DailyRollingFileAppender"> 
     <param name="File" value="errors.log"/> 
     <param name="DatePattern" value="'.'yyyy-MM-dd"/> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <!-- %M for method name , %L for line number --> 
      <param name="ConversionPattern" value="%d{yyyy-MMM-dd HH:mm:ss} %-5p %c %M %L - %m%n%n"/> 
     </layout> 
     <filter class="org.apache.log4j.filter.LevelRangeFilter"> 
      <param name="LevelMin" value="ERROR"/> 
      <param name="LevelMax" value="FATAL"/> 
     </filter> 
    </appender> 

    <logger name="com.foo.bar"> 
     <appender-ref ref="WARNINGS"/> 
     <appender-ref ref="ERRORS"/> 
    </logger> 

</log4j:configuration> 

此代碼是用來測試

// goes to errors.txt 
    log.error("error"); 
//goes to warnings.txt 
    log.warn("warn"); 
+1

在你ConversionPattern您可能需要使用%d {} ISO8601這是一個優化的時間格式化程序的log4j提供的便利性和速度方面的考慮。 – Gandalf 2009-06-19 17:12:01

+0

@Gandalf謝謝。會嘗試。 – sal 2009-06-19 19:11:05

回答

9

在你的log4j.xml配置,您可以創建兩個追加程序,每個使用LevelMatchFilter和每一個單獨的圖形輸出的。

1

我只想設置兩個不同的記錄器。一個叫ERROR,另一個叫DEBUG。然後,您可以輕鬆設置不同的輸出佈局,並只調用ERROR.error或DEBUG.debug。

+3

不好的建議。毫無戒心的用戶可能會聽從你的建議,這將是相當不幸的。 – Ceki 2009-06-18 09:00:35