2011-02-08 61 views
2

我一直在使用log4j並閱讀了不少文章,並且都看起來非常直接,但是當我實現它時,它似乎不起作用。Log4j不會將第三方日誌(Spring.Hibernate等)打印到RollingFileAppender

我有如下要求:

1->需要有2個不同的軟件包創建2個文件:

所以我按log4j的規格創建的,基於2周不同的包創建2個文件,但只有從我們的應用程序記錄日誌記錄到這些文件。

從Spring或Hibernate和Ibatis生成的日誌根本不會被記錄到文件中,但它們會得到並且所有其他日誌都會記錄到控制檯。

我把我正在使用的log4j.xml,任何幫助將不勝感激: 另外我已經嘗試了很多組合,如從根appender刪除引用已經在記錄器中提到,將它們添加回根,添加addivity到記錄器,但沒有工作:

<appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender"> 
    <param name="Threshold" value="DEBUG"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d{ISO8601} DSL Service(CONSOLE) %-5p %c [%t]: %m%n%n"/> 
    </layout> 
</appender> 

<appender name="FEPOCServiceLog" 
    class="org.apache.log4j.RollingFileAppender"> 
    <param name="Append" value="true"/> 
    <param name="maxFileSize" value="100KB" /> 
    <param name="maxBackupIndex" value="5" /> 
    <param name="File" value="C:\\tmp\\DSLService_1.0.log" /> 
    <param name="threshold" value="DEBUG"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" 
      value="%d{ISO8601} DService(CONSOLE) %-5p %c [%t]: %m%n%n" /> 
    </layout> 
</appender> 

<appender name="iServiceLog" 
    class="org.apache.log4j.RollingFileAppender"> 
    <param name="maxFileSize" value="10MB" /> 
    <param name="maxBackupIndex" value="5" /> 
    <param name="File" value="C:\\tmp\\iService_1.0.log" /> 
    <param name="threshold" value="DEBUG"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" 
      value="%d{ISO8601} iService(CONSOLE) %-5p %c [%t]: %m%n%n" /> 
    </layout> 
</appender> 

希望這有助於:

<logger name="com.fepoc.services.dataservice"> 
    <level value="DEBUG"/> 
    <appender-ref ref="FEPOCServiceLog"/>     
</logger> 

<logger name="com.fepoc.mpbit"> 
    <level value="DEBUG"/> 
    <appender-ref ref="iServiceLog"/>     
</logger> 

<logger name="net.sf.hibernate"> 
    <level value="DEBUG"/> 
    <appender-ref ref="FEPOCServiceLog"/>    
</logger> 


<logger name="org.hibernate"> 
    <level value="DEBUG"/> 
    <appender-ref ref="FEPOCServiceLog"/>     
</logger> 

<logger name="com.mchange.v2"> 
    <level value="DEBUG"/> 
    <appender-ref ref="FEPOCServiceLog"/>    
</logger> 

<logger name="com.ibatis.sqlmap"> 
    <level value="DEBUG"/>  
    <appender-ref ref="FEPOCServiceLog"/>    
</logger> 

<logger name="org.springframework"> 
    <level value="DEBUG"/> 
    <appender-ref ref="FEPOCServiceLog"/>     
</logger> 

...

<root> 
<priority value ="debug" /> 
<appender-ref ref="ConsoleAppender"/> 
<appender-ref ref="FEPOCServiceLog"/>   
<appender-ref ref="iServiceLog"/>   

感謝, NK

回答

2

的問題是,Spring和Hibernate不使用log4j的。

休眠內部使用slf4j,所以你需要添加slf4j-log4j以重定向輸出到log4j的結合到類路徑中,看到SLF4J user manual

Spring使用共享日誌記錄,您可以重定向它的輸出加入jcl-slf4j橋樑和slf4j-log4j結合通過SLF4J的log4j,看到Logging Dependencies in Spring