1. Log4J的组成
Log4J由3个部件组成:记录器(Loggers)、存放器(Appenders)和布局(Layouts)。记录器会按照布局中指定的格式把日志信息存放到指定的一个或多个存放器中(如控制台,文本文件)。
2. 记录器
Loj4J允许程序员定义多个记录器,每个记录器都有自己的名字。每一个记录器都有一个级别值,如果记录器没有被赋予级别值,它就从父类中继承过来。特别的要注意的是根记录器总有级别值。
Log4j.rootLogger = info,stdout,file
//定义了两个记录器,名字为stdout和file
//一般建议使用四个级别 error、warn、info和debug
3. 存放器(输出目的地)
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
//定义stdout存放器的的类型以及target属性
4. 布局
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n
//定义stdout的显示类型和显示格式
5. 程序中加载配置文件
public class TestLog4j {
public static Logger logger = Logger.getLogger(TestLog4j.class);
public static void main(String[] args) {
PropertyConfigurator.configure("log4j.properties ");
logger.debug(" debug ");
logger.error(" error ");
}
}
6. 完整的例子
log4j.rootLogger = debug , stdout ,file
### 输出到控制台 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n
### 输出到日志文件 ###
log4j.appender.file = org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File = logs/log.log
log4j.appender.file.Append = true
log4j.appender.file.Threshold = DEBUG ## 输出DEBUG级别以上的日志
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 保存异常信息到单独文件 ###
log4j.appender.file = org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File = logs/error.log ## 异常日志文件名
log4j.appender.file.Append = true
log4j.appender.file.Threshold = ERROR ## 只输出ERROR级别以上的日志!!!
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n