配置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 | log4j.rootLogger=info,stdout,errorfile,infofile ###格式为[level] ,appender1,appender2,…… |
加载log4j配置文件
默认加载
将log4j.properites文件放在src目录下,log4j框架会自动加载配置文件并应用。
例如我的配置文件放在如下位置,则无需其他配置,会被自动加载。
手动加载
如果想要使用相对路径加载配置文件,则需要使用到log4j-core中的ConfigurationSource类和Configurator类。
例如我把配置文件放在如下src目录下代码的一级目录com下:
则需要手动进行配置文件的加载,主要逻辑就是:根据相对路劲找到配置文件,使用log4j的配置文件加载器Configurator来加载。