0

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

无论如何...我只是设置了 SLF4j 和 log4j,所以现在所有内部 facelets 日志消息都被转储到 log4j 中,我实际上可以看到它们。此外,我将 Tomcat 设置为也转储到 log4j 而不是 JULI 的自定义版本。这样做后,一切似乎都很好......直到我关闭了应用程序。

在关闭过程的中途,我的应用程序开始出现错误,因为(这是有道理的)Tomcat 在 spring 已经清理了记录器 bean 之后试图获取记录器实例。

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

我想也许如果我只是提高了日志级别,那么由于级别 req.s,Tomcat 甚至都不会尝试记录 msgs,但是当 tomcat 尝试检索记录器实例时会出现问题,这样它就不起作用了。

4

1 回答 1

1

我会将 Logger 在食物链中移到更高的位置。

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

如果可以的话,您可以选择从您的战争中完全删除 log4j 并依赖通用 tomcat 库类路径中的 log4j。那么当然你会受到 tomcat 配置的支配,你不能从你的应用程序内部访问日志,但它在你的应用程序的整个生命周期中总是存在的。

于 2010-08-18T17:38:53.133 回答