2012-09-07 139 views
3

我的要求是將消息記錄到3個獨立的日誌文件中。在log4j中使用RollingFileAppender,DailyRollingFileAppender,ConsoleAppender。不起作用

我在JBoss服務器使用3個追加程序。

其中三個需要以如 的方式工作1.RollingFileAppender,consoleAppender適用於'INFO'和'ERROR'模式。 2.DailyRollingFileAppender僅適用於'錯誤'模式和特定類別。

我已經試過很多像改變優先級值和類別的組合,但我至今沒有發現任何方式在所有三個工作simulatneously。 fileAppender和ConsoleAppender都可以工作(記錄ERROR和INFO),而DailyRollingFileAppender不會或DailyRollingFileAppender可以工作,但另外兩個日誌只有ERROR不是INFO。

請告訴我一個方法,使他們三人的工作。

下文提到的是我使用的log4j.xml。

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

<!-- ===================================================================== --> 
<!--                  --> 
<!-- Log4j Configuration             --> 
<!--                  --> 
<!-- ===================================================================== --> 

<!-- --> 

<!-- 
    | For more configuration infromation and examples see the Jakarta Log4j 
    | owebsite: http://jakarta.apache.org/log4j 
--> 

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

    <!-- file appender --> 
    <appender name="fileAppender" class="org.apache.log4j.RollingFileAppender"> 
    <param name="file" value="C:/logs/mdmWSServer.log" /> 
    <param name="MaxBackupIndex" value="5" /> 
    <param name="MaxFileSize" value="5MB" /> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="[%d{ISO8601}] [%t] [%-5p][ %c:] %m%n"/> 
    </layout> 
    </appender> 

    <appender name="dailyFileAppender" class="org.apache.log4j.DailyRollingFileAppender"> 
     <param name="file" value="C:/logs/dailyApp.log"/> 
    <param name="MaxBackupIndex" value="5" /> 
    <param name="MaxFileSize" value="5MB" /> 
    <param name="DatePattern" value="'.'yyyy-MM-dd-HH" /> 
    <layout class="org.apache.log4j.PatternLayout">  
     <param name="ConversionPattern" value="[%d{ISO8601}] [%t] [%-5p][%c:] %m%n"/> 
    </layout> 
    </appender> 

    <appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender"> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="[%d{ISO8601}] [%t] %m%n"/> 
    </layout> 
    </appender> 

    <category name="com"> 
     <priority value="INFO"/> 
     <appender-ref ref="fileAppender"/> 
     <appender-ref ref="consoleAppender"/> 
    </category> 
    <category name="com.gsk">  
    <priority value="ERROR"/> 
     <appender-ref ref="dailyFileAppender"/> 
    </category> 
    <category name="org.apache"> 
     <priority value="INFO"/> 
     <appender-ref ref="fileAppender"/> 
    </category> 

    <root> 
    <priority value="DEBUG"/> 
    <appender-ref ref="fileAppender"/> 
    <appender-ref ref="consoleAppender"/> 
    </root> 
</log4j:configuration> 

回答

1

可以限制一個appender只用filter class指定哪個級別你想記錄日誌一定的水平。見下文

<appender name="TRACE" class="org.apache.log4j.ConsoleAppender"> 
      <layout class="org.apache.log4j.PatternLayout"> 
        <param name="ConversionPattern" value="[%t] %-5p %c - %m%n" /> 
      </layout> 
      <filter class="org.apache.log4j.varia.LevelRangeFilter"> 
        <param name="levelMin" value="DEBUG" /> 
        <param name="levelMax" value="DEBUG" /> 
      </filter> 
    </appender> 
示例代碼
相關問題