Log4j的使用
Log4j支持两种配置文件格式:
【1】XML 格式文件
【2】Java 特性文件 log4j.properties(键 = 值)
其中使用log4j.properties文件作为配置文件是最常用方法。
1、log4j.properties文件的相关配置
1.1 rootLogger
基本配置语法为:log4j.rootLogger = level , appenderName ……
level 是日志记录的优先级,分为以下几种级别。
OFF
FATAL
TRACE
ERROR
WARN
INFO
DEBUG
ALL
ALL级别最低,用来开启所有日志记录,而OFF正好相反,它级别最高,用于关闭所有日志记录。
一般情况下,只有其中的四个级别会被使用到,即为ERROR、WARN、INFO、DEBUG,注意,以上四个选项是按级别由高到低排列的。当定义了某个级别后,等于及高于该定义级别的信息才会得到处理。
appenderName放在level后面,定义Appender的名字,用以指向Log信息的输出位置。一般可定义多个appenderName 。常用的appenderName为stdout,指定Log信息从控制台输出。可用的appenderName还有文件、GUI组件等。
log4j.rootLogger = debug, stdout, F
上面的stdout指定Log输出到控制栏,F指定Log输出到F盘的文件(对于输出到文件,appenderName为用户自定义,但为了代码良好的可读性和延续性,所定义的名称应有较强的指向性)。
1.2 Appender
基本配置语法为:
log4j.appender.appenderName = Apender全称
log4j.appender.appenderName.键1 = 值1
……
log4j.appender.appenderName.键N = 值N
语法中appenderName与“1.1 rootLogger”里定义的必须一致。当出现多个appenderName时,应确保分开进行配置。如
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.键1 = 值1
log4j.appender.stdout.键N = 值N
log4j.appender.F = org.apache.log4j.FileAppender
log4j.appender.F.键1 = 值1
log4j.appender.F.键N = 值N
Log4j提供的Apender全称有以下几种:
org.apache.log4j.ConsoleAppender(输出到控制台)
org.apache.log4j.FileAppender(输出到文件)
org.apache.log4j.DailyRollingFileAppender(每日生成日志文件)
org.apache.log4j.RollingFileAppender(文件容量到达指定大小后生成新文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
RollingFileAppender选项可通过设置MaxFileSize属性限定单个文件的最大容量。容量单位可以是KB、MB、GB中的一个。
log4j.appender.R.MaxFileSize = 1 MB
RollingFileAppender选项还可通过设置MaxBackupIndex属性限定最大的生成文件数量。
log4j.appender.R.MaxBackupIndex = 2
例:
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.F = org.apache.log4j.FileAppender
1.3 Layout
基本语法为:
log4j.appender.appenderName.layout = Layout 全称
log4j.appender.appenderName.layout.键1 = 值1
…
log4j.appender.appenderName.layout.键N = 值N
常用的 Layout 全称有以下几种:
org.apache.log4j.HTMLLayout
org.apache.log4j.PatternLayout
org.apache.log4j.SimpleLayout
org.apache.log4j.xml.XMLLayout
例:
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
1.4 信息格式化
Log4j 允许采用与C语言中printf函数的打印格式类似的格式来对输出的日志信息进行格式化,通用形式为 log4j.appender.appenderName.layout.ConversionPattern = %letter(letter指代某个英文字母)。格式化信息可由多个%letter进行组合,组合的方式包含空格、方括号、尖括号等。常用的%letter形式如下。
%m 输出代码中指定的消息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
%d 输出日志时间点的日期或时间
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数
%x 输出与生成日志记录事件的线程相关联的NDC(nested diagnostic contect,嵌套诊断上下文)
可在%d后指定格式,比如:%d{yyyy-MM-dd HH:mm:ss.SSS}。注意,大写的MM指代月份,小写的mm指代分钟数,小写的ss指代秒钟数,大写的SSS指代毫秒数,应予以区分。
例:
log4j.appender.logFile.layout.ConversionPattern = [%-5p] %d(%r) --> [%t] %l: %m %x
1.5 log4j.properties示例
一个简单的log4j.properties示例如下。在实际开发环境中,可能需要配置的属性远比这个例子多得多,但对所有属性完全说明已经超出本博的范围,需要更多配置时,还应以官方API为准。
(本博发布时,Apache Log4j 2 已经可用。)
log4j.rootLogger = debug, stdout, F
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 = [%-5p] %d(%r) --> [%t] %l: %m %x
log4j.appender.F = org.apache.log4j.FileAppender
log4j.appender.F.File = F://logTest/log.log(注意 linux 下和 windows 下文件分隔符的区别)
log4j.appender.F.Append = false
log4j.appender.F.layout = org.apache.log4j.PatternLayout
log4j.appender.F.layout.ConversionPattern = [%-5p] %d(%r) --> [%t] %l: %m %x
2、Log4j 在 Java 代码中的实际应用
2.1 获取配置文件
常见的配置方式有如下几种。
【1】使用缺省环境
import org.apache.log4j.BasicConfigurator;
BasicConfigurator.configure ():
【2】读取使用Java的特性文件编写的配置文件
import org.apache.log4j.PropertyConfigurator;
PropertyConfigurator.configure("log4j.properties");
【2】读取使用XML编写的配置文件
import org.apache.log4j.xml.DOMConfigurator;
DOMConfigurator.configure (“*.xml” )
2.2 getLogger
static Logger logger = Logger.getLogger ( *.class)
*.class应与具体使用 Log4j 的类名相同。
2.3 输出到目的地
Logger.level( Object message ) ;
上面的level为指代,应与log4j.properties中定义的 level 相同,如
Logger.debug( “Hello World” ) ;