上一篇主要介绍了log4j的基本架构,对于开发者来说,其实我们更关注具体的使用。log4j的配置很灵活,基本可以实现你所想的效果。下边我就结合log4j架构来分析和解释配置的具体含义。
log4j配置有两种形式,第一种是xml格式,默认名称为log4j.xml.另一种是log4j.properties,我们项目中用后者就多,其实配置都是一样, 表现形式不同,下边就properties格式举例说明。
首先配置根目录
配置语法为:log4j.rootLogger=[Level],appender1,appender2
如:log4j.rootLogger=error,CONSOLE,R
所有的日志都是它的子类。如果没对具体子类设置日志级别,那就默认为跟雷的日志级别。
同样除了根目录外,你可以对你某个包定义一个日志。
配置语法为:log4j.[package]=[Level],appender1,appender2\
如:log4j.logger.com.jsits=debug,RECORD
Appender配置:
Appender可以理解为日志写到哪个地方。
其语法为:
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
log4j.appender.appenderName.optionN = valueN
如:
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=logs/log //设置输出文件
log4j.appender.R.Encoding=UTF-8 //设置输出编码格式
log4j.appender.R.Threshold=error //设置输出最低级别
log4j.appender.R.DatePattern='-'yyyy-MM-dd HH'.log' //设置输出文件的组织格式(该格式为每一小时产生一个日志文件)
log4j.appender.R.layout=org.apache.log4j.PatternLayout //设置layout
log4j.appender.R.layout.ConversionPattern=[%t] %d %-5p - %m(%F.%M:%L)%n //设置日志样式
log4j.appender.file.encoding=UTF-8
其中, Log4j 提供的 appender 有以下几种:
org.apache.log4j.ConsoleAppender (控制台),
org.apache.log4j.FileAppender (文件),
org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件),
org.apache.log4j.RollingFileAppender (文件大小到达指定尺寸的时候产生一个新的文件),可通过 log4j.appender.R.MaxFileSize=100KB 设置文件大小,还可通过 log4j.appender.R.MaxBackupIndex=1 设置为保存一个备份文件。
org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)
Layout
其中, Log4j 提供的 layout 有以下几种:
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{yyyy MMM dd HH:mm:ss,SSS} ,输出类似: 2002 年 10 月 18 日 22 : 10 : 28 , 921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数
主题配置大概这样。希望有所帮助