2012-09-17 6 views
1

내 응용 프로그램에 로그인 할 때 log4j를 사용하고 있습니다. 내가 다른 파일에 다른 수준의 로그를하려고하지만 뭔가 잘못되고있다. 이 문제를 해결하는 데 도움을 주시면 감사하겠습니다. 의 log4j 어 펜더에 대한다른 파일에 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="console" class="org.apache.log4j.ConsoleAppender"> 
    <param name="Target" value="System.out"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/> 
    </layout> 
</appender> 

<appender name="DEBUG" class="org.apache.log4j.RollingFileAppender"> 
    <param name="File" value="TCS_patch_9/log/retailer_debug.log" /> 
    <param name="Threshold" value="DEBUG" /> 
    <param name="MaxFileSize" value="2MB"/> 
    <param name="MaxBackupIndex" value="3"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
    <param name="ConversionPattern" value="%d{ISO8601} %-5p %c - %m%n"/> 
    </layout> 
</appender> 

<appender name="INFO" class="org.apache.log4j.RollingFileAppender"> 
    <param name="File" value="TCS_patch_9/log/retailer_info.log" /> 
    <param name="Threshold" value="INFO" /> 
    <param name="MaxFileSize" value="2MB"/> 
    <param name="MaxBackupIndex" value="3"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
    <param name="ConversionPattern" value="%d{ISO8601} %-5p %c - %m%n"/> 
    </layout> 
</appender> 
<appender name="ERROR" class="org.apache.log4j.RollingFileAppender"> 
    <param name="File" value="TCS_patch_9/log/retailer_error.log" /> 
    <param name="Threshold" value="ERROR" /> 
    <param name="MaxFileSize" value="2MB"/> 
    <param name="MaxBackupIndex" value="3"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
    <param name="ConversionPattern" value="%d{ISO8601} %-5p %c - %m%n"/> 
    </layout> 
</appender> 
<appender name="FATAL" class="org.apache.log4j.RollingFileAppender"> 
    <param name="File" value="TCS_patch_9/log/retailer_repeat_delay.log" /> 
    <param name="Threshold" value="FATAL" /> 
    <param name="MaxFileSize" value="2MB"/> 
    <param name="MaxBackupIndex" value="3"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
    <param name="ConversionPattern" value="%d{ISO8601} %-5p %c - %m%n"/> 
    </layout> 
</appender> 

    <root> 
    <priority value ="error" /> 
    <appender-ref ref="console"/> 
    <appender-ref ref="DEBUG"/> 
    <appender-ref ref="INFO"/> 
    <appender-ref ref="ERROR"/> 
    <appender-ref ref="FATAL"/> 
    </root> 

</log4j:configuration> 
+2

무엇이 잘못 되었나요? – oers

+0

SO에 오신 것을 환영합니다. 행동이 바람직하지 않다는 것을 모르는 경우 도움이되지 않습니다. –

+0

감사합니다 JohnB and oers. actully 문제는 내가 내 메시지를 필터링하려고하는 것입니다. retailer_error.log에 오류 메시지를 기록하고 retailer_info.log에 정보 로그를 기록하고 다른 기록부에도 마찬가지로 기록하고 싶습니다. – seeker

답변

5

표준 행동은, ERROR 및 FATAL 메시지가 아니라 DEBUG를, 정보를 기록합니다 즉 임계 값 정보를 가진 펜더 자신의 임계 수준 이상, 모든 메시지를 기록 WARN 것입니다. INFO 메시지 만 기록하고 WARN이 아닌 메시지는 you need to use a LevelMatchFilter 이상으로 기록하십시오.

또한 루트 로거 우선 순위를 DEBUG로 설정해야합니다. 그렇지 않으면 오류 및 치명적 메시지가 해당 애펜더에만 전송되고 DEBUG 및 INFO 파일은 비어있게됩니다.

+4

다음은 예제 설정 파일에 대한 링크입니다. http://wiki.apache.org/logging-log4j/LogToAppenderByLevel – dertoni

+0

thansk @dertoni 제공된 링크도 도움이됩니다. :) – seeker

관련 문제