需要解决Tomcat尝试在记录器处理后记录事件的webapp错误

时间:2010-08-18 17:31:57

标签: java spring tomcat log4j java.util.logging

环境:JSF 2.0,RichFaces 3.3.3,Facelets 1.1.15B1,Spring Framework 3.x,WebFlow 2.1,MyBatis 3.0.1,Oracle 10 / 11g后端,SLF4j到Log4j。那可能是TMI,因为我的问题只是一个日志记录问题,但最好不要太彻底。

无论如何......我只是设置了SLF4j& log4j所以现在所有的内部facelets log msgs都被转储到log4j&我实际上可以看到它们。另外我设置Tomcat也转储到log4j而不是它的自定义版本的JULI。一旦这样做,一切似乎都很有效....直到我关闭应用程序。

在关机过程的中途,我的应用程序开始向右调整错误,因为(这是有道理的)Tomcat试图在Spring已经清理了logger bean之后抓取一个记录器实例。

有谁熟悉这个?我想对于任何使用非标准日志记录机制的Tomcat来说,这一定是个常见问题。围绕这个最好的方法是什么?

我想也许如果我只是提高了日志级别,那么Tomcat甚至不会尝试记录msgs因为级别req.s但是当tomcat尝试检索记录器实例以便无法正常工作时会出现问题。

1 个答案:

答案 0 :(得分:1)

我会将食品链中的Logger提升到更高的位置。

我个人从来没有使用spring自己的配置机制配置log4j(并寻找它找到它在过程中使用的属性文件的位置)。

如果可以,您可以选择从战争中完全删除log4j,并依赖于常见的tomcat库类路径中的log4j。当然,您将受到tomcat配置的支配,并且您无法从应用程序内部访问日志,但在应用程序的整个生命周期中它始终存在。