log4J是java中最为常见的日志管理组件,通过log4j可以轻易的在任意代码位置输出日志,并可以灵活的控制日志的输出,是各种系统中不可缺少的功能组件。这里仅对log4j的配置作简单介绍说明。
首先到log4j的官网下载log4组件,官网地址http://logging.apache.org/log4j/,本文使用log4j-1.2.12.jar版本的jar包。
然后创建log4j配置文件。配置文件可以是xml格式或properties格式,文件名称可以为任意名称,可以存放在任意位置,一般缺省此配置文件名称为log4j.properties,缺省存储路径为webroot/WEB-INF/classes/log4j.properties。配置内容如下:
#配置根logger
log4j.rootLogger=ALL, stdout,R
#配置日志输出Appender——stdout
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=[QC] %p [%d] %C.%M(%L) | %m%n
#配置另一个Appender——R
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=D:/logs/mylog.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n
log4j.appender.R.Encoding=UTF-8
#配置输出级别
log4j.logger.com.test=DEBUG
log4j.logger.com.test.log4j=INFO
这里首先配置根logger,声明需要使用的Appender,随后配置Appender的各个属性,最后定义代码各个部分的输出级别。其中Appender可以使用log4j提供的5中预定义Appender,名称和用途分别为:
Appender类名 |
作 用 |
org.apache.log4j.ConsoleAppender | 将日志输出到控制台 |
org.apache.log4j.FileAppender | 将日志输出到文件 |
org.apache.log4j.DailyRollingFileAppender | 每天产生一个日志文件 |
org.apache.log4j.RollingFileAppender | 文件大小到达指定尺寸时产生一个新的文件 |
org.apache.log4j. WriterAppender | 将日志信息以流格式发送到任意指定的地方 |
Appender的Layout包括4种类型,名称和用途分别为:
Layout类名 |
作 用 |
org.apache.log4j.HTMLLayou | 以HTML表格形式布局 |
org.apache.log4j.PatternLayout | 可以灵活地指定布局模式 |
org.apache.log4j.SimpleLayout | 包含日志信息的级别和信息字符串 |
org.apache.log4j.TTCCLayout | 包含日志产生的时间、线程、类别等等信息 |
日志输出级别被定义为五个级别,按优先级从低到高依次为:debug->info->warn->error->fatal
有关log4j更详细的参数选项配置可以参考官方提供的帮助文档。
配置文件创建好之后就可以在代码中使用log4j了,示例调用代码:
package com.test.log4j; import java.io.IOException; import java.io.InputStream; import java.util.Properties; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; public class Log4JSample { public Log4JSample() throws IOException{ //初始化log4j的配置 InputStream inStream = this.getClass().getClassLoader().getResourceAsStream("log4j.properties"); Properties property = new Properties(); property.load(inStream); PropertyConfigurator.configure(property); } public void doSample(){ Logger logger = Logger.getLogger(Log4JSample.class); logger.debug("debug"); logger.info("info"); logger.warn("warn"); logger.error("error"); logger.fatal("fatal"); } }
运行doSample方法,日志会输出到控制台和文件D:/logs/mylog.log中,输出结果:
2010-10-28 14:42:57,375-[TS] INFO main com.test.log4j.Log4JSample - info 2010-10-28 14:42:57,375-[TS] WARN main com.test.log4j.Log4JSample - warn 2010-10-28 14:42:57,375-[TS] ERROR main com.test.log4j.Log4JSample - error 2010-10-28 14:42:57,375-[TS] FATAL main com.test.log4j.Log4JSample - fatallog4j的配置初始化只需要一次就可以了,一般在系统初始化时进行log4j的初始化工作,然后就可以在系统的任何地方使用log4j了。