在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。
▲图1. 在RAD工具中导入J2EE utility jar
▲图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内容如下:
▲图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内容如下:
▲图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或更高的版本:
针对 JCL v1.0.3:
4、更改类载入方式。将ear部署到WAS上之后,点击该ear,选择“类装入和更新检测”(图5),选择”类已装入并且是先使用本地类装入器(父类最后)”(图6)。点击“确定”,“保存”。
▲图5 修改Ear级别的类装入配置
▲图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。点击“确定”,“保存”。
▲图7 选择Web模块
▲图8 修改Web模块级别的类装入器顺序
注意事项:
如果使用RAD-AD进行开发时,将应用通过RAD工具发布到WAS上,然后进入WAS管理控制台发现无法更改步骤4中的类载入方式,可以双击RAD-AD工具中“服务器”视图中定义的服务器,然后将“用于WebSphere Application Server的发布设置”更改为“使用服务器上的资源运行服务器”。见图9。保存配置。然后重新通过RAD工具发布应用,就可以在WAS管理控制台修改类加载的配置了。
▲图9 在RAD工具中修改服务器配置