为多个子项目配置公共log4j xml

时间:2013-08-05 16:47:03

标签: log4j

我试图在tomcat中为子项目使用常见的log4j xml。已经部署了父项目,父项目的一部分是其他三个项目。已经存在两个项目A和B,并且日志记录工作正常。我正在添加一个新项目C并更新了log4j,如下所示。我确实看到正在创建ProjectC.log文件(这是在tomcat启动时发生的),但此文件(或任何其他文件)中没有与Project C相关的日志语句。这是我目前的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)

我已经在我的pom中声明了log4j(1.2.14),slf4j-log4j12(1.4.1)jar文件的依赖项。 当我独立执行Project C时(运行junit测试用例时),此设置正常。 如何为项目C进行日志记录工作?我应该对log4j xml进行哪些更改?谢谢。

1 个答案:

答案 0 :(得分:0)

原来我使用了错误的属性文件。在实际的log4j.properties文件中,我所要做的就是创建一个名为Project C的新appender并添加这一行,而不是使用rootCategory注册:

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