技术开发 频道

在WAS上使用第三方Log4j开源日志工具包

  【IT168 技术】Log4j是常用的一种第三方日志工具包。在WebSphere应用服务器(以下简称WAS)上使用Log4j时,默认配置下Log4j.properties的配置有时会不生效,日志会输出到WAS的SystemOut.log中。如果您希望使用log4j根据自定义的log4j.properties打印日志,需要进行一些配置更改。本文以log4j-1.2.15.jar为例,开发工具使用RAD-AD,服务器运行时为WAS v7.0,文中内容同样适用于其他log4j版本、Eclipse开发工具或手工操作,WAS其他版本。

  在WAS中配置Log4j

  根据您的应用打包情况和需求,首先需要确定log4j的jar包存放的位置。例如,在一个WAS的实例(一个JVM中),可能会有如下不同的情形:

  1、希望一个ear中只有一个Log4j的配置,。此种情况下,可以将log4j-1.2.15.jar放到Ear级别作为J2EE utility jar包(Ear的根目录或者建立一个lib目录)。目录组织结构参见附件的Demo.ear。

  2、希望单个war和包含这个war的ear具有不同的Log4j配置。此种情况下,可以将log4j-1.2.15.jar和相应的配置分别放到Ear级别和war包的WEB-INF/lib目录下。请注意,在War包中只放置log4j.properties而不放置log4j.jar,ear级别的log4j.jar是无法加载到war包级别中的log4j.properties的。

  针对情形1的详细步骤

  1、将log4j-1.2.15.jar和相应的commons-logging.jar作为J2EE utility jar包放到Ear级别。在RAD-AD中,选中ear项目Demo,点击右键,选择”导入”/“J2EE实用程序JAR”。如图1。将log4j-1.2.15.jar和相应的commons-logging.jar作为J2EE utility jar导入到ear中,本文中将这两个Jar包放置在ear/lib目录中。应用的层次结构在“企业资源管理器”视图中显示如图2。

在WAS上使用第三方Log4j开源日志工具包
▲图1. 在RAD工具中导入J2EE utility jar

在WAS上使用第三方Log4j开源日志工具包
▲图2. Ear包层次结构

  2、分别对Web项目和EJB项目增加对这两个Jar包的引用。选中Web项目DemoWar,点击右键,选择“属性”。在Java EE模块依赖项中,选中log4j-1.2.15.jar和commons-logging.jar。(如图3)。点击“应用”。此步相当于修改Web项目DemoWar的META-INF/MANIFEST.MF,修改完毕后MANIFEST.MF内容如下:

在WAS上使用第三方Log4j开源日志工具包

在WAS上使用第三方Log4j开源日志工具包
▲图3. 在Web项目中添加对utility jar包的引用

  选中Ejb项目DemoEjb,点击右键,选择“属性”。在Java EE模块依赖项中,选中log4j-1.2.15.jar和commons-logging.jar。(如图4)。点击“应用”。此步相当于修改Ejb项目DemoEjb的META-INF/MANIFEST.MF,修改完毕后MANIFEST.MF内容如下:

在WAS上使用第三方Log4j开源日志工具包

在WAS上使用第三方Log4j开源日志工具包
▲图4. 在Ejb项目中添加对utility jar包的引用

  3、将两个文件commons-logging.properties和log4j.properties放到相应的位置。我们可以将commons-logging.properties放到commons-logging.jar的根目录,或者commons-logging.jar的META-INF/services目录。log4j.properties可以放在log4j-1.2.15.jar的根目录中。或者,我们也可以创建一个jar包LogResource.jar,包含commons-logging.properties和log4j.properties这两个文件。其中,log4j.properties是您的log4j配置信息,而commons-logging.properties内容如下:

  针对JCL v1.1或更高的版本:

在WAS上使用第三方Log4j开源日志工具包

  针对 JCL v1.0.3:

在WAS上使用第三方Log4j开源日志工具包

  4、更改类载入方式。将ear部署到WAS上之后,点击该ear,选择“类装入和更新检测”(图5),选择”类已装入并且是先使用本地类装入器(父类最后)”(图6)。点击“确定”,“保存”。

在WAS上使用第三方Log4j开源日志工具包
▲图5 修改Ear级别的类装入配置

在WAS上使用第三方Log4j开源日志工具包
▲图6 修改Ear级别的类装入顺序

  对应用进行测试,访问urlhttp://localhost:9080/DemoWeb/MyServlet?name=wasuser。在log4j.properties定义的日志位置,能够看到日志显示,表明log4j在WAS上配置成功。

  针对情形2的详细步骤

  对于情形2以及单独一个war包的应用,针对War包的部分,可以将情形1中的步骤1、2、3简化为将log4j-1.2.15.jar和commons-logging.jar放置到WEB-INF/lib目录下,将commons-logging.properties放到commons-logging.jar的根目录,或者commons-logging.jar的META-INF/services目录中。然后进行步骤4即可。在步骤4中,如果我们希望加载War包中放置的log4j.jar,则还需要在War包级别更改类载入路径。点击该应用,然后选择“管理模块”,参见图7。点中该War包,将“类装入器顺序”更改为“类已装入并且是先使用本地类装入器(父类最后)”。参见图8。点击“确定”,“保存”。

在WAS上使用第三方Log4j开源日志工具包
▲图7 选择Web模块

在WAS上使用第三方Log4j开源日志工具包
▲图8 修改Web模块级别的类装入器顺序

  注意事项:

  如果使用RAD-AD进行开发时,将应用通过RAD工具发布到WAS上,然后进入WAS管理控制台发现无法更改步骤4中的类载入方式,可以双击RAD-AD工具中“服务器”视图中定义的服务器,然后将“用于WebSphere Application Server的发布设置”更改为“使用服务器上的资源运行服务器”。见图9。保存配置。然后重新通过RAD工具发布应用,就可以在WAS管理控制台修改类加载的配置了。

在WAS上使用第三方Log4j开源日志工具包
▲图9 在RAD工具中修改服务器配置

0
相关文章