我在我的应用程序中使用 Log4j,并有一些用于调试和错误的附加程序。我在tomcat上测试过,工作正常。在各自的文件中生成所有日志。但是当我在 WAS6.1 上部署代码时,所有日志仅在 SystemOut.log 内生成。
请帮忙!
问题可能是 WebSphere 6.1 在内部使用 Jakarta Commons Logging (JCL),如果您的任何代码或第 3 方库也使用 JCL,那么 WebSphere 的配置会与尝试使用 log4j 的应用程序发生冲突。如果发生这种情况,您将看到您所看到的一切。
有多个参考 and 博客文章描述了解决这个问题的方法。我们发现最简单的方法是创建一个名为org.apache.commons.logging.LogFactory
in the META-INF/services
Web 应用程序的目录(位于 WAR 存档的根目录中)。该文件必须包含以下行:
org.apache.commons.logging.impl.Log4jFactory
(至少对于较新版本的 WebSphere...)另一个关键是 JCL jar 必须从与 log4j jar 相同的位置加载。例如要么都来自 WEB-INF/lib,要么都来自共享库。因此,您不能依靠从 WebSphere 自己提供的副本加载 JCL。如果他们被加载不同的类加载器,他们无法正确看到对方。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)