Log4j框架配置文件
1 Log4j的配置文件分类
Log4j支持两种配置文件格式:一中是以log4j.properties ,另一种是 log4j.xml
2 Log4j的配置文件例子
##自定义日志的输出级别log4j.rootLogger=WARN, stdout##自定义日志
log4j.logger.access=WARN, accesslog4j.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{yyyy-MM-dd HH:mm:ss} %m%n### 输出到日志文件 ###
log4j.appender.R = org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File = logs/test.log
log4j.appender.R.Append = true
log4j.appender.R.Threshold = DEBUG
log4j.appender.R.DatePattern = '.'yyyy-MM-dd-HH
log4j.appender.R.layout = org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [%t] [%c] [%p] - %m%n### 业务日志###
log4j.appender.access = org.apache.log4j.FileAppender
log4j.appender.access.File = logs/test.access.log
log4j.appender.access.Append = true
log4j.appender.access.layout = org.apache.log4j.PatternLayout
log4j.appender.access.layout.ConversionPattern = %m%n
3 Log4j的配置文件解析
(1)配置rootLogger
最重要就是第一个log4j.rootLogger,指定log4j日志的输出界别(目的地)
log4j.rootLogger=INFO,stdout,file意思为:日志可以输INFO级别以上的数据,将日志输出到stdout标准控制输出(控制台),输出到file
常见的日志输出级别:DEBUG(调试) < INFO(信息) < WARN(警告) < ERROR(错误) < FATAL(致命错误)
日志输出的顺序:和日志输出级别一致,即配置为一个级别,输出的内容只能是该级别及其以上级别的信息, INFO(输出的包括 INFO WARN ERROR FATAL),ERROR(ERROR FATAL), 所以,一般情况下:在开发,测试环境中,日志的级别为DEBUG;在生产环境中,日志级别为INFO
(2)配置日志信息输出目的地Appender
输出目的地:日志输出的各种各样的目的地,都是通过Appender来进行实现追加的,我们在appender中看到的PatternLayout的格式如下:
%m 输出代码中指定的消息
%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
%p 输出优先级,即日志级别:DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS},输出类似:2002年10月18日 22 : 10 : 28 , 921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java: 10 )
ConsoleAppender,FileAppender,DailyRollingFileAppender,RollingFileAppender,WriterAppender(将日志信息以流格式发送到任意指定的地方)
ConsoleAppender(控制台) | Threshold=WARN:指定日志消息的输出最低层次。 ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。 Target=System.err:默认情况下是:System.out,指定输出控制台 |
DailyRollingFileAppender(每天产生一个日志文件) | Threshold=WARN:指定日志消息的输出最低层次。 ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。 File=mylog.txt:指定消息输出到mylog.txt文件。 Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。 DatePattern=”.”yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。 当然也可以指定按月、周、天、时和分。即对应的格式如下: 1)”.”yyyy-MM: 每月 2)”.”yyyy-ww: 每周 3)”.”yyyy-MM-dd: 每天 4)”.”yyyy-MM-dd-a: 每天两次 5)”.”yyyy-MM-dd-HH: 每小时 6)”.”yyyy-MM-dd-HH-mm: 每分钟 |
FileAppender(文件) | Threshold=WARN:指定日志消息的输出最低层次。 ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。 File=mylog.txt:指定消息输出到mylog.txt文件。 Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。 |
RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件) | Threshold=WARN:指定日志消息的输出最低层次。 ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。 File=mylog.txt:指定消息输出到mylog.txt文件。 Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。 MaxFileSize=100KB:后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。 MaxBackupIndex=2:指定可以产生的滚动文件的最大数。 |