log4j配置解析

先给出log4j.properties文件的基本格式和一个例子。

基本格式:

#配置根Logger
log4j.rootLogger = [level],appenderName1,appenderName2, …

#配置日志信息输出目的地Appender
log4j.appender.appenderName  =  fully.qualified.name.of.appender.class 
log4j.appender.appenderName.option1  =  value1 
… 
log4j.appender.appenderName.optionN  =  valueN 

#配置日志信息的格式(布局)
log4j.appender.appenderName.layout  =  fully.qualified.name.of.layout.class 
log4j.appender.appenderName.layout.option1  =  value1 
… 
log4j.appender.appenderName.layout.optionN  =  valueN 

例子:

### root logger option ###
### set log levels - for more verbose logging change 'info' to 'debug' ###
# ERROR,WARN,INFO,DEBUG
log4j.rootLogger=info, stdout, file

# APPENDER stdout
### direct log messages to stdout ###
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

# APPENDER file
# RollingFileAppender
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=D\:/police_logs/police.log
log4j.appender.file.Append=true 
log4j.appender.file.MaxFileSize=10MB 
log4j.appender.file.MaxBackupIndex=5

# PatternLayout
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n

# org.hibernate logger
log4j.logger.org.hibernate=warn, stdout, file
# org.hibernate Logger  appender  ROOT Logger)
log4j.additivity.org.hibernate=false


第一:配置根Logger

配置根主要就是指明日志文件的等级以及输出方式(Appender)。[level]用来指明日志等级,总共有五个等级,包括:FATAL > ERROR > WARN > INFO > DEBUG,当指定等级之后,在日志文件中只打印大于等于这个等级的信息,比如,定义等级为info,则日志文件会打印info,warn,error,fatal的信息。appenderName1,appenderName2,....是用来指明输出方式(Appender)的,这些名字可以随便取,因为详细定义在后面。

第二:配置输出方式(Appender)的详细定义

在例子中,我们定义了两个输出方式(Appender),一个stdout,一个file。然后在下面为这两个方式配置了详细定义。比如stdout,为org.apache.log4j.ConsoleAppender类型,也就是控制台输出类型,然后就是控制台的一些配置,最后是为stdout配置格式(布局),也就是为stdout配置layout。通过这个讲解可以很好的理解log4j.properties的基本配置格式。


另外附上log4j的输出方式:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

附上log4j提供的信息格式(布局):
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

附上格式中参数的一些解析:
 %m   输出代码中指定的消息
 %p   输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL 
 %r   输出自应用启动到输出该log信息耗费的毫秒数 
 %c   输出所属的类目,通常就是所在类的全名 
 %t   输出产生该日志事件的线程名 
 %n   输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n” 
 %d   输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,
比如:%d{yyy MMM dd HH:mm:ss , SSS},输出类似:2002年10月18日  22 :10 :28 , 921  
 %l   输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
举例:Testlog4.main(TestLog4.java: 10 ) 

虽然我们定义了根Logger的日志级别,但是我们仍然可以为不同的输出方式(Appender)再次定义日志级别,只要我们
只需要在配置中修改Appender的Threshold 就能实现,比如下面的例子:
### set log levels ###
log4j.rootLogger = debug , stdout , D , E


### 输出到控制台 ###
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.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG ## 输出DEBUG级别以上的日志
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
### 保存异常信息到单独文件 ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File = logs/error.log ## 异常日志文件名
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR ## 只输出ERROR级别以上的日志!!!
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

虽然根定义的日志级别为debug,但是对于E输出方式,我们重新配置了日志级别为ERROR



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值