2011-06-14 58 views
2

我有我要记录哪些事件的类。说,有2个级别:调试和错误。我如何将错误记录到errorFile中并将信息调试到debugFile?log4j的:错误的错误文件

所以,我使用的log4j.xml有一个过滤机制,但它似乎只对不同类别的工作,而不是一个类的内部。

请,帮助新手。 =)

回答

3

你必须定义和使用两个附加目的地不同阈值这样的:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 

    <!-- Error --> 
    <appender name="ErrorFile" 
     class="org.apache.log4j.RollingFileAppender"> 
     <param name="Threshold" value="error"/> 
     <param name="file" value="log.err" /> 
     <param name="MaxFileSize" value="10MB" /> 
     <param name="MaxBackupIndex" value="10" /> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%-5p %d %C.%M (%L) - %m%n" /> 
     </layout> 
    </appender> 

    <appender name="LogFile" 
     class="org.apache.log4j.RollingFileAppender"> 
     <param name="Threshold" value="debug"/> 
     <param name="file" value="log.log" /> 
     <param name="MaxFileSize" value="10MB" /> 
     <param name="MaxBackupIndex" value="10" /> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%-5p %d %C.%M (%L) - %m%n" /> 
     </layout> 
    </appender> 

    <logger name="foo.bar" additivity="false"> 
     <level value="debug" /> 
     <appender-ref ref="LogFile" /> 
     <appender-ref ref="ErrorFile" /> 
    </logger> 

    <root> 
     <priority value="warn" /> 
     <appender-ref ref="ErrorFile"/> 
    </root> 

</log4j:configuration> 

这个问题也回答了在log4j FAQs


刚刚发现的LogToAppenderByLevel溶液(here),这可能对你也有帮助。

+0

谢谢您的回答。但是,如果LogFile中存在“调试”阈值,则“错误”级别的信息也会存在。我需要INT日志文件不是“INFO”只有“调试”信息,“WARN”,“错误”或“致命”。 – Dmitry 2011-06-14 13:15:33

+0

@Dmitry看一看的[LogToAppenderByLevel](http://wiki.apache.org/logging-log4j/LogToAppenderByLevel)溶液。 – FrVaBe 2011-06-14 14:29:02

+0

它帮助!非常感谢你!!!! – Dmitry 2011-06-14 15:29:26