Log4J2 with Websphere 8.5



我正在尝试为遗留应用程序进行log4j迁移。我对配置文件进行了更改,并在Tomcat中进行了本地测试,日志在Tomcat中正确显示。但是,当我在WAS上部署时,日志记录会停止。我检查了很多关于必要的依赖关系和可能的问题的页面,但现在我觉得我被卡住了。以下是我已经尝试过的:

  • 手动将log4jjars添加到WAS中的lib/ext目录中(与commons日志一起,我读了一篇文章,其中提供了帮助,尽管ear中已经存在所有这些jars(
  • 仔细检查,确认配置文件在类路径上,并且语法正确
  • 添加了logj42 web依赖项
  • 在web.xml中添加了必要的过滤器(Spring版本为3.8,因此也添加了带有配置名称上下文参数的配置侦听器(
  • 已检查WAS中的类加载器-它首先是父类

我是不是错过了什么?

欢迎提出任何想法。提前谢谢!

WAS包含其自己的公共日志API(不使用Log4j(,因此使用您自己的记录器需要一些与类相关的额外配置。通常情况下,情况是这样的:

  1. 将您的公共日志记录和log4jjar以及日志记录属性文件放在运行服务器的用户可读的某个目录(不是WAS_HOME/lib/ext(中。

  2. 在服务器上创建一个共享库,将该目录作为其类路径,然后选择";使用隔离类加载器";选项将该共享库与您的应用程序或web模块相关联。

理想情况下,应该是这样。独立的共享库在委托给服务器的加载程序之前会搜索自己,所以您的应用程序将";参见";commons-logging/log4j类在共享库中,而不是在服务器中,同样,它应该从该目录中获取配置文件,而不是服务器中的配置文件。

您也可以通过将所有日志记录内容保留在WAR或EAR中,并将其类加载器设置为parent-last(这会导致类加载器在委派给服务器级加载器之前在本地进行搜索(来完成同样的基本任务,但这是一个风险更大的配置-如果您的应用程序包括也由服务器提供的API,父类最后一个类的加载增加了ClassCastException或LinkageErrors的可能性。

最新更新