ssl*_*oan 9 java logging tomcat shared-libraries classloader
我正在寻找将我们的tomcat实例从5.5.27升级到6.0.32,并且在shared/lib目录中从jars进行日志记录时遇到了一些问题(我在tomcat 6中重新创建了这个目录).
我们有一个jar文件,我们在构建过程中创建了一个jar文件,其中包含一些公共代码,而在tomcat 5下,它存在于shared/lib下.当我们从这个jar文件中的代码编写日志语句时,它们被写入当时调用jar的Web应用程序的日志文件中.我们的每个webapps在其WEB-INF/lib目录中都有一个log4j.properites和log4j.jar,在shared/lib中也有一个log4j.jar,但没有log4j/properties.
我们使用log4j并获取对日志的引用,如下所示:
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class MyClass {
private final static Log CLASS_LOG = LogFactory.getLog(MyClass.class);
}
Run Code Online (Sandbox Code Playgroud)
但是当我将我们的jar,webapps,log4.properties和log4j.jars完全相同的配置移动到tomcat 6中时,来自我们常见jar的日志记录语句就转到catalina.log.
我已经做了相当多的阅读(包括http://www.mulesoft.com/tomcat-classpath,以及tomcat网站上的类加载器和日志记录文档),大多数时候我无法弄清楚它是如何工作的在tomcat 5做了!(我没有设置它,这是我继承的东西,直到现在'只是工作').
有没有人尝试将共享库中的日志转换为webapp日志文件?我认为将共享jar放在每个webapp的WEB-INF/lib目录中会对此进行排序,但后来我最终得到了同样东西的许多副本.
小智 1
查看 tomcat6/7 中的 tomcat/conf/catalina.properties。他们不推荐使用共享路径和服务器路径,仅显式配置通用路径(例如 tomcat6/lib 是通用的)。您可以重新启用共享,我的猜测是您会获得与 tomcat 5.x 类似的体验。
但是,您说您将logging.properties放在WEB-INF/lib中,我认为这是不对的,因为它应该只包含jar文件。它应该放在 WEB-INF/classes/ 中
另外,此时,请停止使用公共日志记录。相反,编码为 slf4j,因为它的 Tomcat 问题较少。另外,如果您使用 logback 而不是 log4j,它甚至可以避免使用适配器(例如,您的 slf4j 调用实际上是直接 logback 调用)。使用不同的配置文件(但有在线 log4j.property 转换器)。
| 归档时间: |
|
| 查看次数: |
2457 次 |
| 最近记录: |