【问题标题】:Tomcat 6 and log4j application logging produce no outputTomcat 6 和 log4j 应用程序日志记录不产生输出
【发布时间】:2010-10-29 09:09:22
【问题描述】:

我正在尝试让 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 文件,但没有放入其中。它也不会出现在任何其他日志中,也没有明显的错误。知道发生了什么吗?

【问题讨论】:

  • 你检查过 catalina.out 日志吗?
  • 我没有 catalina.out。我的 catline.2009-05-27.log 中有标准的启动内容。

标签: java tomcat logging log4j tomcat6


【解决方案1】:

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

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

【讨论】:

  • 不幸的是,这些更改并没有解决它。
【解决方案2】:

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

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

【讨论】:

  • 这是一个愚蠢的问题,您是否绝对肯定在执行代码时日志行甚至会受到影响?另外顺便说一句,添加 appender 两次(到 root 和“com.company.mass”)将导致日志消息发送到 appender 两次
  • 愚蠢的问题,但很好。我正在使用 Maven 生成的默认 index.jsp,它巧合地生成了与我的 servelt 生成的完全相同的输出(Hello World)。转到带有日志记录的页面使日志记录工作。
  • 根据我的经验,当 log4j.properties 文件与 log4j.jar 文件位于同一目录时效果最佳。不确定它是否与 .xml 配置相同,但我敢打赌应该是。
【解决方案3】:

尝试添加该行:

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

到你的 massAppender 配置

还有这一行

<priority value ="debug"/>

在你的根定义中

【讨论】:

  • 这没什么区别。
  • 我的 Tomcat6 甚至没有包含“massAppender”的配置文件。
【解决方案4】:

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

【讨论】:

    猜你喜欢
    • 2012-05-18
    • 2012-06-17
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 2011-03-08
    相关资源
    最近更新 更多