log4j使用log4j的准备工作,
第一jar包,需要log4j-1.2.11.jar包,导入到自己的工程中;
第二创建log4j.properties文件,填入相应的配置,我自己填写了两个配置一个是控制台的输出,另一个是文件的输出。
配置如下:
### 把日志信息输出到控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
### 信息打印到System.out上
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
### 指定输出格式:显示日期和log信息log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %m%n
### 把日志信息输出到文件 F:\\log\\test.log
log4j.appender.file=org.apache.log4j.FileAppender
### 指定日志输出的文件名
log4j.appender.file.File=f:\\log\\test.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
### 指定输出格式:显示日期,日志发生位置和日志信息log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l %m%n
### 设置优先级别、以及输出源 ###
### 设置优先级别为debug
log4j.rootLogger=debug, stdout, file
配置完成了! 下面写一个测试程序吧!!!
Log4j.java
import org.apache.log4j.Logger;
public class Log4j {
public static void main(String[] args) {
// 获取日志记录器,这个记录器将负责控制日志信息
Logger logger = Logger.getLogger(Log4j.class.getName());
try {
// 使用Logger对象的debug、info方法输出日志信息
logger.debug("设置教员的编号。");
} catch (IllegalArgumentException ex) {
// 使用Logger对象的debug、info方法输出日志信息
logger.info(ex.getMessage());
}
}
}
测试结果:这是控制台的输出效果:
2013-08-13 12:22:21 设置教员的编号。
当log文件路径设置为工程目录下的一个路径时,做法如下:
在web项目中ser目录下
log4j.properties
按等级保存到文件
log4j.rootLogger=info,stdout,info,debug,error
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n
log4j.logger.info=info
log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n
log4j.appender.info.datePattern='.'yyyy-MM-dd
log4j.appender.info.Threshold = INFO
log4j.appender.info.append=true
log4j.appender.info.File=${webApp.root}/logs/info.log
log4j.logger.debug=debug
log4j.appender.debug=org.apache.log4j.DailyRollingFileAppender
log4j.appender.debug.layout=org.apache.log4j.PatternLayout
log4j.appender.debug.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n
log4j.appender.debug.datePattern='.'yyyy-MM-dd
log4j.appender.debug.Threshold = DEBUG
log4j.appender.debug.append=true
log4j.appender.debug.File=${webApp.root}/logs/debug.log
log4j.logger.error=error
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n
log4j.appender.error.datePattern='.'yyyy-MM-dd
log4j.appender.error.Threshold = ERROR
log4j.appender.error.append=true
log4j.appender.error.File=${webApp.root}/logs/error.log
创建Servlet类,程序启动加载
Log4jInitServlet.java
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import org.apache.log4j.PropertyConfigurator;
public class Log4jInitServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void init(ServletConfig config) throws ServletException {
super.init(config);
String prefix = getServletContext().getRealPath("/");
String file = getInitParameter("log4j");
if (file != null) {
System.out.println(prefix);
System.setProperty("webApp.root", prefix);/*替换log4j.properties文件中的${webApp.root}参数*/
PropertyConfigurator.configure(prefix + file);
}
}
}
在web.xml中添加
<servlet>
<servlet-name>log4j</servlet-name>
<servlet-class>
com.jzy.che.action.Log4jInitServlet
</servlet-class>
<init-param>
<param-name>log4j</param-name>
<param-value>WEB-INF/classes/log4j.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
调用
public static Logger logger = Logger.getLogger(Log4jUtil.class.getName());