tomcat - Tomcat 启动后 Log4j 不工作

标签 tomcat logging log4j

我在 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,或者是否有两个实例并且您在启动期间使用一个,稍后在另一个实例上使用。 ClassLoader 弹出。

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

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

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

最后,您可能会调试到对 log4j 的调用以查看您的消息在何处被吞没。

关于tomcat - Tomcat 启动后 Log4j 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5648285/

相关文章:

sorting - 按日期合并多个日志文件,包括多行

java - 将 System.out 和 System.err 重定向到 slf4j

grails - Grails Log4j DSL 配置中的 Log4j 过滤器

apache - 我的网站因 tomcat 的内存不足异常而崩溃

ubuntu - 用于 Tomcat8 的 SAML2

java - 如何在本地 TomCat 服务器托管的 JSF 应用程序中使用在外部 JAR 中声明的接口(interface)

c# - 如何检测我是否在控制台中运行

php - 列出对数据库的所有查询

java - log4J 未写入 Spring Boot 微服务中的特定日志文件

tomcat - 在 Jfree 报告模板中使用静态图像的相对路径