一、简介:使用简单,足够灵活,开源,被绝大多数公司使用
二、使用时分为两快:1、配置文件;
2、程序中如何使用;
1、 配置文件:
//可以定义根记录器信息
log4j.rootLogger=DEBUG,CONSOLE,A1,im
//可以定义某一子级别的记录器信息
log4j.logger.myclass=DEBUG,stdout
# 应用于控制台
// CONSOLE输出端定义为控制台
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
//CONSOLE输出端单独定义了级别为WARN
log4j.appender.Threshold=WARN
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
#log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n
#应用于文件
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=file.log
log4j.appender.FILE.Append=false
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
# Use this layout for LogFactor 5 analysis
等等,还可以向邮件,数据库,输出流等方式
2、 在程序中使用
主要分为3个步骤:A,得到记录器,B,读取配置文件,初始化记录器,C,写日志
A,得到记录器
//表示得到记录器本身,
//Logger提供了一个static的方法getLogger来得到记录器
Logger log= Logger.getLogger(Log4jTest.class);
B,读取配置文件
读取配置文件有三种方式:BasicConfigurator、PropertyConfigurator、
DOMConfigurator
以下介绍三种的区别:
BasicConfigurator.configure();指的读取默认的系统配置,即这个时候可以不用配置日志的配置文件。
PropertyConfigurator.configure();指读取.properties格式的日志的配置文件,默认读取的配置文件放在src下,如果不是放在src下,则需要如下写法:
String str=System.getProperty("user.dir");
try{
Properties pro= null;
pro= new Properties();
InputStream inStream=null;
//当前目下的/bin/demo/dd.properties文件
File file= new File(str+"//bin/demo/dd.properties");
inStream=new FileInputStream(file);
pro.load(inStream);
PropertyConfigurator.configure(pro);
}catch(Exception ex){
System.out.println(ex.getMessage());
}
DOMConfigurator指读取xml的文件。
C,写日志
写日志用如下的写法:log.warn("----------test");
ConversionPattern参数的格式含义
格式名 含义
%c 输出日志信息所属的类的全名
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28
%f 输出日志信息所属的类的类名
%l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行
%m 输出代码中指定的信息,如log(message)中的message
%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
%r 输出自应用启动到输出该日志信息所耗费的毫秒数
%t 输出产生该日志事件的线程名