2013-08-05 74 views
1

我想在tomcat中爲子項目使用常見的log4j xml。有一個父項目已經部署,父項目的一部分是其他三個項目。兩個項目A和B已經存在,並且記錄工作正常。我正在添加一個新的項目C,並像下面那樣更新了log4j。我看到正在創建ProjectC.log文件(這是在tomcat啓動時發生的),但是此文件(或任何其他文件)中沒有Project C相關日誌語句。這是我目前的log4j XML:爲多個子項目配置常見的log4j xml

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

<appender name="rootAppender" class="org.apache.log4j.ConsoleAppender"> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n"/> 
    </layout> 
</appender> 

<appender name="ProjectAAppender" class="org.apache.log4j.RollingFileAppender"> 
    <param name="file" value="${catalina.base}/logs/projectA.log"/> 
    <param name="Append" value="true"/> 
    <param name="MaxFileSize" value="100000KB"/> 
    <param name="MaxBackupIndex" value="3"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d [%t] %-5p %c %x - %m%n"/> 
    </layout> 
</appender> 

<appender name="ProjectBAppender" class="org.apache.log4j.RollingFileAppender"> 
    <param name="file" value="${catalina.base}/logs/ProjectB.csv"/> 
    <param name="Append" value="true"/> 
    <param name="MaxFileSize" value="10000KB"/> 
    <param name="MaxBackupIndex" value="3"/> 
    <layout class="org.apache.log4j.PatternLayout"/> 
</appender> 

<appender name="ProjectCAppender" class="org.apache.log4j.RollingFileAppender"> 
    <param name="file" value="${catalina.base}/logs/ProjectC.log"/> 
    <param name="Append" value="true"/> 
    <param name="MaxFileSize" value="10000KB"/> 
    <param name="MaxBackupIndex" value="3"/> 
    <layout class="org.apache.log4j.PatternLayout"/> 
</appender> 

<logger name="projA" additivity="true"> 
    <level value ="DEBUG" /> 
    <appender-ref ref="ProjectAAppender"/> 
</logger> 
<logger name="projA.Performance" additivity="true"> 
    <level value ="INFO" /> 
    <appender-ref ref="ProjectBAppender"/> 
</logger> 
<logger name="projC" additivity="true"> 
    <level value ="DEBUG" /> 
    <appender-ref ref="ProjectCAppender"/> 
</logger> 
<root> 
    <priority value ="INFO" /> 
    <appender-ref ref="rootAppender"/> 
</root> 

我得到我的log4j的實例是使用SLF4J的LoggerFactory方式:

LoggerFactory.getLogger(clazz) 

我已經宣佈了log4j的依賴關係(1.2.14) slf4j-log4j12(1.4.1)我的pom中的jar文件。 當我獨立執行Project C時(運行junit測試用例時),此設置正常工作。 如何爲項目C做日誌記錄工作?我應該對我的log4j xml進行任何更改?謝謝。

回答

0

原來我使用的是錯誤的屬性文件。在實際的log4j.properties文件中,我所要做的就是創建一個名爲Project C的新Appender,並添加以下行,而不是使用rootCategory註冊:

log4j.logger.com.projectC.related.package=DEBUG, ProjectCAppender