我在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>
答案 0 :(得分:0)
我想知道是否有其他东西试图配置log4j,或者是否有两个实例,并且您在启动期间使用一个实例,后来又在另一个实例上使用。弹出ClassLoader。
您可以尝试使用java -verbose:class运行tomcat。这应该提供很多关于加载的类的日志。检查是否有任何日志记录内容被加载多次,或者是否有其他日志库被加载。
另一项测试是删除所有log4j设置。 Log4j现在应该抱怨没有正确设置。如果不是,我会说其他东西正在以预期的方式配置它。
您可以检查Log4J是否提供任何挂钩以通知您配置的更改。
最后,您可以调试对log4j的调用,以查看吞下消息的位置。