Websphere所有日志都将转到SystemOut.log

我在我的应用程序中使用Log4j并有一些调试和错误的appender。 我在tomcat上测试了这个,工作正常。 生成各自文件中的所有日志。 但是当我在WAS6.1上部署代码时,所有日志都只在SystemOut.log中生成。

请帮忙!

问题可能是WebSphere 6.1在内部使用Jakarta Commons Logging(JCL),如果您的任何代码或第三方库也使用JCL,那么WebSphere的配置与尝试使用log4j的应用程序冲突。 如果发生这种情况,你会看到你所看到的确切内容。

有多个参考和博客文章描述了解决此问题的方法。 我们发现最简单的方法是在Web应用程序的META-INF/services目录中创建名为org.apache.commons.logging.LogFactory的文件(在WAR归档的根目录中)。 该文件必须包含以下行:

 org.apache.commons.logging.impl.Log4jFactory 

(至少对于较新版本的WebSphere …)另一个关键是必须从与log4j jar相同的位置加载JCL jar。 例如,既可以来自WEB-INF / lib,也可以来自共享库。 因此,您不能依赖于从WebSphere自己提供的副本加载JCL。 如果他们被不同的类加载器加载 ,他们就无法正确地看到对方。