定义日志配置文件,放到WEB-INFO目录下。
- log4j.logger.OperateLog=INFO,A1
- ###输出到日志文件###
- log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
- log4j.appender.A1.File=E:\\file.log
- log4j.appender.A1.layout=org.apache.log4j.PatternLayout
- log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss} [%t\:%r]-[%p] %m%n
log4j.logger.OperateLog=INFO,A1
###输出到日志文件###
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=E:\\file.log
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss} [%t\:%r]-[%p] %m%n
其中,OperateLog是自定义日志的名称,调用的时候要用到,该配置文件中可以定义多个不同的日志输出配置,当调用的时候用哪个就调用哪个。
INFO是日志输出级别,主要有:ERROR、WARN、INFO、DEBUG
ERROR 为严重错误 主要是程序的错误
WARN 为一般警告,比如session丢失
INFO 为一般要显示的信息,比如登录登出
DEBUG 为程序的调试信息
A1是输出的目的地,可以是多个,直接跟在后面,用逗号隔开。表示将日志级别为INFO的信息输出到A1这个目的地。接下来的四句代码就是定义A1的。
关于appender输出目的地,输出格式等的详细定义,自己可以google之,这里不详细介绍。
log4j的三个重要部分:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。
2. web.xml配置
- <SPAN style="WHITE-SPACE: pre"> </SPAN><context-param>
- <param-name>log4jConfigLocation</param-name>
- <param-value>WEB-INF/log4j.properties</param-value>
- </context-param>
- <context-param>
- <param-name>log4jRefreshInterval</param-name>
- <param-value>60000</param-value>
- </context-param>
- <!-- 需要添加spring-web.jar包,否则用发生错误信息 -->
- <listener>
- <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
- </listener>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>WEB-INF/log4j.properties</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>
<!-- 需要添加spring-web.jar包,否则用发生错误信息 -->
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
第一个参数定义的是log4j配置文件的位置,第二个参数定义的是刷新周期,修改log4j配置文件后不用重新部署。后面的是监听器,必须将spring-web.jar包包含到项目工程里。
3. 调用
在需要日志输出的类中,定义日志对象
private final Logger logger = Logger.getLogger("OperateLog");
其中OperateLog是自定义的日志名称,可以根据需求,进行定义、使用。
在需要输出日志的地方使用
logger.info(session.getAttribute("user") + "登录系统");
****************************************************************************************************
import org.apache.log4j.Logger;
public String add() throws Exception {
try {
admin.setPass(MessageDigestUtil.digestByMD5(admin.getPass()));
adminService.add(adminService.getAdminDao(), admin);
response.setContentType("text/html;Charset=UTF-8");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
out.print("<script>window.location.href='admin__list.action'</script>");
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
Logger.getLogger(this.getClass()).info(e.getMessage());
}
return SUCCESS;
}