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

我的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文件,但没有把它得到。它不以任何其他日志显示了两种,并且没有明显的错误。任何想法是怎么回事?

有帮助吗?

解决方案

您确定log4j的实际使用您的log4j.xml为它的配置,而不是在classpath另一个文件?

启用的系统属性-Dlog4j.debug有log4j的打印出的结果究竟哪个配置文件它正在使用的信息。

其他提示

不知道,如果你在你的根记录器需要一个优先事项。尝试这种配置

<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>

尝试添加行:

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

到您massAppender配置

和该行

<priority value ="debug"/>

根定义中

当我遇到这个问题,我能够加入common-logging.jar我展开组件来解决它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top