【问题标题】:Log4j not working after Tomcat has StartedTomcat 启动后 Log4j 不工作
【发布时间】:2011-04-13 11:16:38
【问题描述】:

我在 tomcat 服务器上部署了一个应用程序并使用 log4j 日志记录系统。该应用程序托管在 centOS 上。

我的问题是 - 在我的 ServletContextListener 中,log4j 记录了我在控制台上指示的消息,但是当 tomcat 最终完成启动时,log4j 不再工作。

奇怪的是,这个应用程序部署在 UAT 环境中并且 log4j 工作正常。 唯一的区别是 UAT 上的 tomcat 和生产上的 tomcat 是,我的 tomcat 目录中有一些符号目录,其中 webapps、bin 等位于。

知道为什么会出现这个问题吗?

<appender name="console" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c %x - %m%n" />
    </layout>
</appender>

<logger name="com.el.app">
    <level value="warn" />
    <appender-ref ref="console" />
</logger>

【问题讨论】:

  • 你说的不再起作用是什么意思?它在两者之间起作用吗?不工作是什么意思?它会产生异常、记录错误还是什么都不做?
  • 您用于配置 log4j 的代码(java、xml 或其他)是什么?
  • 是的,它介于两者之间。
  • 我还注意到控制台上没有打印异常。

标签: tomcat logging log4j


【解决方案1】:

我想知道是否有其他东西正在尝试配置 log4j,或者是否有两个实例并且您在启动期间使用一个,然后在另一个实例上使用。弹出类加载器。

您可以尝试使用 java -verbose:class 运行 tomcat。这应该提供大量有关加载的类的日志。检查是否有任何日志内容被加载超过一次,或者是否有其他日志库被加载。

另一个测试是删除所有 log4j 设置。 Log4j 现在应该抱怨没有正确设置。如果不是,我会说其他东西正在以意想不到的方式配置它。

您可以检查 Log4J 是否提供任何挂钩来通知您有关配置的更改。

最后你可能会调试到 log4j 的调用来查看你的消息在哪里被吞没了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 2012-05-13
    • 2020-09-21
    • 1970-01-01
    • 2018-07-26
    • 1970-01-01
    • 2018-09-19
    相关资源
    最近更新 更多