Tomcat 6 和 log4j 应用程序日志记录不产生输出
我正在尝试让 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 文件,但没有任何内容放入其中。 它也没有出现在任何其他日志中,并且没有明显的错误。 知道发生了什么事吗?
I'm trying to get log4j application (webapp) logging working in a Tomcat 6 app. I have log4j-1.2.15.jar in my WEB-INF directory, log4j.dtd and log4j.xml in WEB-INF/classes.
My log4j.xml looks like:
<?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>
My servlet is in the package:
package com.company.mass;
where the logger is declared as:
private static Logger logger = Logger.getLogger(Handler.class);
and at the top of my doGet(...) method there is:
logger.error("foo");
When I deploy the app in Tomcat and go to the servlet, it works correctly. I even get a mass.log file, but nothing gets put in it. It doesn't show up in any other logs either, and there are no obvious errors. Any idea what's going on?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
当我遇到这个问题时,我可以通过将
common-logging.jar
添加到我的部署程序集中来解决它。When I've encountered this problem I was able to resolve it by adding
common-logging.jar
to my deployment assembly.尝试将行 : 添加
到您的 MassAppender 配置中
,并将此行添加
到您的根定义中
Try adding the line :
to your massAppender config
and this line
inside your root definition
不确定您是否需要根记录器的优先级。 试试这个配置
Not sure if you need a priority in your root logger. Try this config
您确定 log4j 实际上使用您的
log4j.xml
进行配置,而不是类路径上的另一个文件?启用系统属性 -Dlog4j.debug 以使 log4j 打印出有关其正在使用的配置文件的信息。
Are you sure that log4j is actually using your
log4j.xml
for it's configuration, and not another file on the classpath?Enable the system property
-Dlog4j.debug
to have log4j print out information about exactly which configuration file it is using.