2

我正在尝试为 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.xml 中声明了 log4j(1.2.14)、slf4j-log4j12(1.4.1) jar 文件的依赖关系。当我独立执行项目 C 时(运行 junit 测试用例时),此设置工作正常。如何使项目 C 的日志记录工作?我应该对我的 log4j xml 进行任何更改吗?谢谢你。

4

1 回答 1

0

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

log4j.logger.com.projectC.related.package=DEBUG, ProjectCAppender
于 2013-08-07T15:24:04.773 回答