使用log4j需要先导入log4j的jar包,下载地址log4j官网。首先需要新建log4j.properties的配置文件,直接放在src目录下,或者新建一个与src并列的etc文件夹。用来存放配置文件。
配置log4j.properties
log4j.appender.xing=org.apache.log4j.ConsoleAppender
log4j.appender.xing.layout=org.apache.log4j.PatternLayout
log4j.appender.xing.layout.ConversionPattern=[%p](%d{yyyy-MM-dd HH:mm:ss,SSS})---%l--%m\r\n
log4j.rootLogger=INFO,xing
- log4j.appender.xing=org.apache.log4j.ConsoleAppender是配置日志文件的输出地方,这里是ConsoleAppender控制台。其中xing是appender的名字,可以自己命名。
除此之外还有其他的输出目的地:
log4j.appender.xing=org.apache.log4j.ConsoleAppende 控制台输出
log4j.appender.xing=org.apache.log4j.FileAppender 文件输出
org.apache.log4j.DailyRollingFileAppender 每天产生一个日志文件 - log4j.appender.xing.layout=org.apache.log4j.PatternLayout配置日志输出布局,一般为org.apache.log4j.PatternLayout可以灵活设置输出格式,其他还有
HTMLLayout 格式化日志输出为HTML表格
SimpleLayout 以一种非常简单的方式格式化日志输出 - log4j.appender.xing.layout.ConversionPattern=[%p](%d{yyyy-MM-dd HH:mm:ss,SSS})—%l–%m\r\n 指定输入格式,其中各个字符的意思为:
%m 输出代码中指定的消息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd
HH:mm:ss , SSS}
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。 - log4j.rootLogger=INFO,xing,表示数据的级别和输出源。输出日志的级别有DEBUG、INFO、WARN、ERROR、FATAL五种,这五个级别的顺序是DEBUG、INFO、WARN、ERROR、FATAL依次增高。
它的规则:如果定义的是info则输出比info级别高的,低的将被屏蔽到不输出。
使用logger
package com.xingguo.action;
import org.apache.log4j.Logger;
import com.xingguo.entity.User;
import com.xingguo.service.UserService;
public class UserAction extends BaseAction{
private static final long serialVersionUID = 1L;
private Logger log = Logger.getLogger(UserAction.class);
public String loginForm(){
log.debug("logger....debug");
log.info("logger....info");
log.warn("logger....warn");
log.error("logger....error");
log.fatal("logger....fatal");
return SUCCESS;
}
}
输入结果如下:
[INFO](2015-07-20 14:48:03,823)---com.xingguo.action.UserAction.loginForm(UserAction.java:21)--logger....info
[WARN](2015-07-20 14:48:03,825)---com.xingguo.action.UserAction.loginForm(UserAction.java:22)--logger....warn
[ERROR](2015-07-20 14:48:03,825)---com.xingguo.action.UserAction.loginForm(UserAction.java:23)--logger....error
[FATAL](2015-07-20 14:48:03,826)---com.xingguo.action.UserAction.loginForm(UserAction.java:24)--logger....fatal
只输出了比info级别高的日志。
以文件的形式输出
log4j.appender.lout=org.apache.log4j.FileAppender
log4j.appender.lout.layout=org.apache.log4j.PatternLayout
log4j.appender.lout.layout.ConversionPattern=[%p](%d)---%l--%m\r\n
log4j.appender.lout.file=C:/logs/struts2.log
log4j.rootLogger=INFO,lout,xing
一般日志输出到一个文件中,时间长了会很大。所以一般采用一天生成一个文件。
log4j.appender.lout=org.apache.log4j.DailyRollingFileAppender
log4j.appender.lout.layout=org.apache.log4j.PatternLayout
log4j.appender.lout.layout.ConversionPattern=[%p](%d)---%l--%m\r\n
log4j.appender.lout.DatePattern='.'yyyy-MM-dd
log4j.appender.lout.Threshold=ERROR
log4j.appender.lout.file=C:/logs/struts2.log
log4j.rootLogger=INFO,lout,xing
log4j.appender.lout.DatePattern=’.’yyyy-MM-dd为文件名的格式
log4j.appender.lout.Threshold=ERROR 级别超过error的写入文件,低级别的在控制台输出