现在的位置: 首页 > 综合 > 正文

如何在Tomcat和WebSphere环境中使用LOG4J

2013年11月08日 ⁄ 综合 ⁄ 共 1181字 ⁄ 字号 评论关闭

在进行j2ee开发时,经常需要使用log4j。网上流传的一般做法是编写一个Log4jServlet,在该Servlet中通过ProperptyConfigurator或DOMConfigurator加载log4j配置文件,然后指定该Servlet在应用启动时自动加载。这个方法比较复杂,按照下面的步骤,可以避免编写类似的Log4jServlet,也不需要自己在程序中加载log4j配置文件。

1. 将log4j.jar放到WEB-INF/lib下。

2. 通过IDE在项目构建中添加对log4j.jar的引用。

3. 放置log4j.properties或log4j.xml文件

使用标准的名称作为配置文件的名称是为了使LOG4J可以自动搜索到该文件并加载它。对于tomcat环境,缺省情况下该文件需要放到WEB-INF/classes下。对于WebSphere环境,缺省情况下该文件可以放到WEB-INF/classes下,也可以放到和WEB-INF同一层目录中。如果希望改变此文件的位置,可以通过将该文件所在的目录加入到项目构建的类路径中实现。

如果使用log4j.xml文件,需要将标准的log4j.dtd放到和log4j.xml同一个目录下。

4. 配置log4j

一般将fileappender产生的日志文件配置到logs/下,对于两种应用服务器,此目录的具体位置稍有不同。tomcat会在${CATALINA_HOME}/bin下创建logs目录;websphere会使用概要表文件目录下的logs目录。

在配置logger时,应使用包的名称作为logger的名称,这样可以使log4j在运行时自动寻找匹配的logger。

5. 在程序中使用log4j

在需要使用log4j的类中,导入log4j,如:

import org.apache.log4j.Logger;

为类加入成员logger,并调用静态方法对其进行初始化。

protected Logger logger = Logger.getLogger(this.getClass().getName());

初始化后,当前类就从配置文件中获得了与类名称匹配的logger;如果找不到与类名称匹配的logger,则log4j会向上寻找与该类所在的包的名称匹配的logger;如果找不到任何匹配的logger,则使用rootLogger作为缺省的logger。

加入了如上的logger成员后,就可以在程序中进行日志输出了。

此外,我个人认为应该尽量在servlet层使用log4j进行日志操作,而不是在jsp中或bean中。因为servlet起着流程控制作用,在控制过程中使用日志记录流程的执行情况比较合适。另外,记录日志时经常会记录USERID这类的信息,这些信息经常放在context中,而从servlets中访问context比较方便。 

抱歉!评论已关闭.