1

我正在尝试让 log4j 应用程序(webapp)日志记录在 Tomcat 6 应用程序中工作。我的 WEB-INF 目录中有 log4j-1.2.15.jar,WEB-INF/classes 中有 log4j.dtd 和 log4j.xml。

我的 log4j.xml 看起来像:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration>
<appender name="massAppender" class="org.apache.log4j.RollingFileAppender">
    <param name="maxFileSize" value="100KB" />
    <param name="maxBackupIndex" value="2" />
    <param name="File" value="${catalina.home}/logs/mass.log" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{ABSOLUTE} %5p %c{1}: %m%n " />
    </layout>
</appender>

<category name="com.company.mass">
    <priority value="DEBUG"/>
    <appender-ref ref="massAppender"/>
</category>

<root>
     <appender-ref ref="massAppender" />
</root>

</log4j:configuration>

我的 servlet 在包中:

package com.company.mass;

记录器被声明为:

private static Logger logger = Logger.getLogger(Handler.class);

在我的 doGet(...) 方法的顶部有:

logger.error("foo");

当我在 Tomcat 中部署应用程序并转到 servlet 时,它可以正常工作。我什至得到了一个 mass.log 文件,但没有放入其中。它也不会出现在任何其他日志中,也没有明显的错误。知道发生了什么吗?

4

4 回答 4

3

您确定 log4j 实际上是在使用您log4j.xml的配置,而不是类路径上的另一个文件吗?

启用系统属性-Dlog4j.debug让 log4j 打印出关于它正在使用的配置文件的确切信息。

于 2009-05-27T19:39:44.290 回答
0

尝试添加该行:

<param name="Threshold" value="ALL" />

到你的 massAppender 配置

这条线

<priority value ="debug"/>

在您的根定义中

于 2009-05-27T20:48:56.193 回答
0

不确定您的根记录器是否需要优先级。试试这个配置

<category name="com.company.mass">
    <priority value="DEBUG"/> 
    <!-- no need to specify appender again here -->
</category>

<root>
    <priority value="INFO"/> 
     <appender-ref ref="massAppender" />
</root>
于 2009-05-27T19:06:25.403 回答
0

当我遇到这个问题时,我可以通过添加common-logging.jar到我的部署程序集中来解决它。

于 2012-04-13T08:59:20.837 回答