原文地址:http://www.cnblogs.com/ArtsCrafts/archive/2013/06/06/log4j4.html
Log4j配置中有3个重要的概念:日志记录器(Logger),输出地(Appender)以及日志格式化器(Layout)。其中Logger负责记录日志,Appender负责输出到什么地方,Layout负责以什么格式输出,输出那些附加信息(例如时间,类名,方法名,所在行数等)
Logger是有名字的,它的名字便是Logger.getLogger()方法参数。如果参数为所在的类,Log4j会取类名为Logger的名称,例如com.log4j.test.Log4jTes
Logger为单例模式:相同名字的Logger只会有一个实例。如果在构建一个同名的Logger,Log4j会返回先前的Logger实例。
命名规则:一般都以类名作为Logger的名称。Logger的名字类似于Java中的Package名字,大小写敏感,用点分开具有继承关系,例如com.log4j是com.log4j.test的父亲。log4j.properties中通过名称来配置Logger的属性。
Log4j中有一个跟记录器rootLogger,它是所有Logger的父亲
Logger的配置
在log.properties配置中,log4j.logger后面配置的是Logger,log4j.appender后面配置的是 Appender,例如:
1 # 配置Logger为ERROR级别,输出到A1
2 log4j.logger.com.log4j.test.Log4jTest=DEBUG, A1
3
4 # 配置Appender A1,输出到控制台,使用表达式布局
5 log4j.appender.A1=org.apache.log4j.ConsoleAppender
6 log4j.appender.A1.layout=org.apache.log4j.PatternLayout
7 log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss,SSS} [%C]-[%p] %m%n
如某个Logger没有配置,则使用它的父亲配置,知道找到为止。一般情况下,只需配置根记录器rootLogger即可,所有Logger都会沿用rootLogger的配置
rootLogger配置
根记录器rootLogger直接使用log4j.rootLogger配置。rootLogger是所有记录器的父亲。任何记录器都可以继承rootLogger的配置代码如下
1 #配置rootLogger为ERROR级别,输出地位A1
2 log4j.rootLogger= ERROR, A1
3
4 #配置该logger为DEBUG 级别,输出地则继承rootLogger配置
5 log4j.logger.com.log4j.test2.Log4jConfigTest=DEBUG 6
7 # 配置Appender A1,输出到控制台,使用正则表达式布局
8 log4j.appender.A1=org.apache.log4j.ConsoleAppender
9 log4j.appender.A1.layout=org.apache.log4j.PatternLayout
10 #定义输出格式
11 log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss,SSS} [%C]-[%p] %m%n
如果要对某个Logger进行特殊输出,只需要配置一下该Logger的输出级别即可。
注意:log4j中logger的继承,对于appender的继承是叠加方式的继承,而不是覆盖,也就是说一个logger可以有多个appender,且可以同名。
对于输出级别的继承,是覆盖方式的继承。
例如:
log4j.rootLogger = info,out1
log4j.logger.com.test = debug,out1
则log4j.logger.com.test等价于debug,out1,out1
可以使用log4j.additivity.com.test = false来关闭名称为com.test的logger从父logger继承
类别category配置
Logger还有个类别(Category)的概念,通过设置类别来设置该类别下所有的Logger:
1 #配置rootLogger为ERROR级别,输出地位A1
2 log4j.rootLogger= ERROR, A1
3
4 #作用于类别com.log4j.test下所有的Logger, 输出则继承rootLogger配置
5 log4j.category.com.log4j.test=DEBUG
6
7 # 配置Appender A1,输出到控制台,使用正则表达式布局
8 log4j.appender.A1=org.apache.log4j.ConsoleAppender
9 log4j.appender.A1.layout=org.apache.log4j.PatternLayout
10 #定义输出格式
11 log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss,SSS} [%C]-[%p] %m%n
catergory类似于Java中的Package,效果跟Logger的名字等价
分享到:
相关推荐
log4j详解(超详细)
log4j详解.txtlog4j详解.txt
Log4j详解
Log4j详解,详细讲解log4j的使用,和原理
log4j详解.pdf
Log4j详解与实战.
log4j详解-信息输出到文件或控制台 log4j详解-信息输出到文件或控制台
log4j详解,log4j详细配置说明手册
log4j使用详解log4j使用详解log4j使用详解log4j使用详解log4j使用详解log4j使用详解log4j使用详解log4j使用详解log4j使用详解log4j使用详解log4j使用详解
log4j详解与实战 log4j详解与实战 log4j详解与实战
log4j详解与实战、log4j 详解(二)
log4j详解.祝大家学习进步!
Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是...
Log4j配置详解 特别清晰,大家可以下载来参考学习,有问题可以反馈
log4j详解***********************************
log4j详解与实战 - 企业应用 Logger - 日志写出器,供程序员输出日志信息 Appender - 日志目的地,把格式化好的日志信息输出到指定的地方去 ConsoleAppender - 目的地为控制台的Appender FileAppender - 目的地...