配置log4j属性

配置log4j属性

log4j配置文件支持xml格式和properites格式,下面为例properites介绍需要配置的内容。
配置文件分为三部分配置:

  • 日志级别配置
  • 输出目的地配置
  • 输出样式配置

1. 日志级别配置

日志级别配置分为两种:根目录级别和包目录基本。
顾名思义,根目录级别就是定义总的日志级别,具体到某个特定的包路径下的类,还可以定制日志级别。
Log4j自定义的日志级别有:OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL
但是建议只使用ERROR > WARN > INFO > DEBUG 这四种。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定 义了 INFO 级别,则应用程序中所有 DEBUG 级别的日志信息将不被打印出来 。

2. 输出目的地配置

定义输出目的地(appender),定义完成后需要配置根目录启用
Log4j 提供的 appender 有以下几种:

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

3. 输出样式配置

定义日志样式,在输入目的地配置中使用

Log4j 提供的 layout 有以下4种:

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

Log4J 采用类似 C 语言中的 printf 函数的打印格式格式化日志信息,打印参数如下

  • %m 输出代码中指定的消息
  • %p 输出优先级,即 DEBUG , INFO , WARN , ERROR , FATAL
  • %r 输出自应用启动到输出该 log 信息耗费的毫秒数
  • %c 输出所属的类目,通常就是所在类的全名
  • %t 输出产生该日志事件的线程名
  • %n 输出一个回车换行符, Windows 平台为 “rn” , 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)

Log4j还有其他一些配置:

  • 指定输出到文件的日志级别:
  • 指定输出文件路径
  • 指定输出日志中的日期格式
  • 指定日志日志文件写入方式是否为文件后追加
  • 指定日志编码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
log4j.rootLogger=info,stdout,errorfile,infofile ###格式为[level] ,appender1,appender2,……
log4j.logger.com.markey.messageboard=DEBUG
log4j.logger.com.markey.messageboard.springtest=info

#console config
log4j.appender.stdout=org.apache.log4j.ConsoleAppender ###定义一个控制台输出目的地
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%m%n
log4j.appender.stdout.encoding=GB18030

#errorfile config
log4j.appender.errorfile=org.apache.log4j.DailyRollingFileAppender ###定义一个每日日志输出目的地
log4j.appender.errorfile.File= c:/logs/app_logs/error.log ###输出文件路径
log4j.appender.errorfile.Threshold=error ###只有error以上级别的日志才会被输出
log4j.appender.errorfile.DatePattern='.'yyyy-MM-dd ###指定日期格式
log4j.appender.errorfile.Append=true ###指定日志文件以追加方式写入
log4j.appender.errorfile.layout=org.apache.log4j.PatternLayout
log4j.appender.errorfile.layout.ConversionPattern=[%-5p]|%d|%C|%L|%m%n
log4j.appender.errorfile.encoding=GB18030 ###指定日志文件编码

#infofile config
log4j.appender.infofile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.infofile.File=c:/logs/app_logs/info.log
log4j.appender.infofile.Threshold=info ###只有error以上级别的日志才会被输出
log4j.appender.infofile.DatePattern='.'yyyy-MM-dd
log4j.appender.infofile.Append=true
log4j.appender.infofile.layout=org.apache.log4j.PatternLayout
log4j.appender.infofile.layout.ConversionPattern=[%-5p]|%d|%C|%L|%m%n
log4j.additivity.infofile=false
log4j.appender.infofile.encoding=GB18030

加载log4j配置文件

默认加载

将log4j.properites文件放在src目录下,log4j框架会自动加载配置文件并应用。
例如我的配置文件放在如下位置,则无需其他配置,会被自动加载。

log4j配置文件位置

手动加载

如果想要使用相对路径加载配置文件,则需要使用到log4j-core中的ConfigurationSource类和Configurator类。
例如我把配置文件放在如下src目录下代码的一级目录com下:

则需要手动进行配置文件的加载,主要逻辑就是:根据相对路劲找到配置文件,使用log4j的配置文件加载器Configurator来加载。

log4j配置文件路径