Log4j的web配置和使用
运行环境是MyEclipse+Tomcat,如果开发应用程序,可以将log4j.properties文件直接放在工程目录下,但是在WEB开发中也这样,会出现找不到log4j.properties文件的错误。所以在WEB开发中使用log4j的步骤为:
1、 将log4j.jar文件拷贝到webroot下的WEN-INF中的lib里,这样MyEclipse会自动将文件显示在引用包里。
2、 在web.xml配置文件中增加如下代码
<servlet>
<servlet-name>log4j</servlet-name>
<servlet-class>com.xyliuke.Log4jInit</servlet-class>
<init-param>
<param-name>log4j</param-name>
<param-value>WEB-INF\log4j.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
其中<servlet-class>标签对中是初始化java类的路径,<param-value>标签对中为log4j.properties的路径。
3、 建立初始化java类
类名为Log4jInit的代码为:
package com.xyliuke;
import org.apache.log4j.PropertyConfigurator;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Log4jInit extends HttpServlet {
public void init() {
String prefix = getServletContext().getRealPath("/");
String file = getInitParameter("log4j");
System.out.println("................log4j start");
if (file != null) {
PropertyConfigurator.configure(prefix + file);
}
}
public void doGet(HttpServletRequest req, HttpServletResponse res) {
}
}
在Tomcat服务启动时,会去加载这个类
4、 测试
建两个jsp文件,我用的是struts2框架,所以在action中写入
Logger logger = Logger.getLogger(当前类名);
即可使用log4j的日志管理了。
在log4j.properties中的指定的日志文件会默认在tomcat的lib文件夹下输出,所以想要改变文件的输出路径,只需在log4j.properties中的log4j.appender.A2.File=..\\webapps\\StuManage\\log\\stu.log设置即可。