一. log4j的使用步骤:
1.编写log4j的properties配置文件,一般命名为log4j.properties,也可以使用别的文件名。
2.在程序中使用log4j记录日志
public class Test {
//获取Logger(有两种类型的日志可以获取,查看后面详细解释)
private static Logger logger = Logger.getLogger("ROLLFILE"); //或者Logger.getLogger("Test .class");
public static void main(String[] args) {
new Test().testLogger();
}
public void testLogger() {
//log4j配置文件路径
String path = (this.getClass().getResource("/").getPath()).substring(1);
//加载配置文件
PropertyConfigurator.configure(path + "config/log4j.properties");
//使用各个日志等级进行记录
logger.debug("debug msg!");
logger.info("info msg!");
logger.warn("warn msg!");
logger.error("error msg!");
logger.fatal("fatal msg!");
//对于异常对象的打印
try{
System.out.println(1%0);
}catch(Exception e){
logger.error("未知异常", e);
}
}
}
说明:
1. 日志对象获取
日志的获取通过Logger对象的静态方法getLogger进行获取,该方法参数有两个重载方法,第一种方法的参数字符串,该方法用与获取指定名称的日志对象(可以通过配置文件配置多个日志对象,配置文件实质为日志对象集合);第二种方法的参数为类,获取到的日志对象为rootLogger,参数的作用为日志打印时改行日志显示的类名全称。
2. 日志系统配置加载
使用PropertyConfigurator对象的静态方法configure进行加载log4j的配置文件
3. 日志对象输入日志方法
根据日志等级的不同,日志输出方法为五种,分别为debug,info,warn,error,fatal。每个方法都有两个重载方法,第一个方法参数为Object,此方法打印object的字符串形式,第二个方法的参数为Object和Throwable,此方法用于打印Object及异常。
二. log4j的配置:
1. 基本配置
# 配置root日志 这个是不指定日志对象即使用类作为参数获取到的日志对象,第一个参数为日志等级,表示输出日志最低等级,之后的参数为输出目标Appender【控制台或者文件】,这两种输出目标的配置是有些不同的,后面说明。
log4j.rootLogger=DEBUG, CONSOLE
log4j.logger.FILE=DEBUG, FILE
###################
# Console Appender
###################
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=DEBUG
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
#####################
# File Appender
#####################
# 指定Appender[Appender有ConsoleAppender和FileAppender ]
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=%d{yyMMdd HH:mm:ss} [%p] %l - %m%n
日志打印格式表达式说明:
转自【http://zwllxs.iteye.com/blog/1143112】
%n - 换行
%m - 日志内容
%p - 日志级别(FATAL, ERROR, WARN, INFO, DEBUG or custom)
%r - 程序启动到现在的毫秒数
%% - percent sign in output
%t - 当前线程名
%d - 日期和时间,
常用的格式有 %d{DATE}, %d{ABSOLUTE}, %d{HH:mm:ss,SSS}, %d{ddMMyyyy HH:mm:ss,SSS}。。。
%l - 同 %F%L%C%M
%F - java源文件名
%L - java源码行数
%C - java类名,%C{1} 输出最后一个元素
%M-java方法名
%n - 换行
%m - 日志内容
%p - 日志级别(FATAL, ERROR, WARN, INFO, DEBUG or custom)
%r - 程序启动到现在的毫秒数
%% - percent sign in output
%t - 当前线程名
%d - 日期和时间,
常用的格式有 %d{DATE}, %d{ABSOLUTE}, %d{HH:mm:ss,SSS}, %d{ddMMyyyy HH:mm:ss,SSS}。。。
%l - 同 %F%L%C%M
%F - java源文件名
%L - java源码行数
%C - java类名,%C{1} 输出最后一个元素
%M-java方法名