环境: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尝试检索记录器实例以便无法正常工作时会出现问题。
答案 0 :(得分:1)
我会将食品链中的Logger提升到更高的位置。
我个人从来没有使用spring自己的配置机制配置log4j(并寻找它找到它在过程中使用的属性文件的位置)。
如果可以,您可以选择从战争中完全删除log4j,并依赖于常见的tomcat库类路径中的log4j。当然,您将受到tomcat配置的支配,并且您无法从应用程序内部访问日志,但在应用程序的整个生命周期中它始终存在。