您的位置:首页 > 编程语言 > Java开发

java工程集成log4J

2015-06-10 12:29 645 查看
log4j是Java开发平台中的日志管理工具,是Apache基金会的一个开源项目,它的作用可以简单的理解为在开发过程中替代system.out的功能。

1、在工程中集成log4j:

(1)在官网http://logging.apache.org/log4j/2.x/download.html中下载jar包并添加到build path中

(2)修改配置文件log4j.properties,可以百度一下,这种资源很多,我的配置文件如下:

log4j.rootLogger =DEBUG,console,file,D,E #设置日志级别和日志输出目的地,级别只能有一个,目的地可以由多个

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n

#warn:before write the file log.log, clear it
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.file=./log.log
log4j.appender.file.Append = false #注意:每次写文件前,清空,做试验用,默认值为true
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
#log4j.appender.file.layout=org.apache.log4j.TTCCLayout
#org.apache.log4j.TTCCLayout do not have the property such as ConversionPattern

#test output different log information to seperate file
#set the DEBUG level information output to the file debug.log
#warn:before write the file debug.log, clear it
log4j.appender.D=org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.file=./debug.log
log4j.appender.D.Append = false <span style="font-family: Arial, Helvetica, sans-serif;">#注意:每次写文件前,清空,做试验用,默认值为true</span>
log4j.appender.D.Threshold = DEBUG #只有比DEBUG级别高的日志才会输出到debug.log文件中,相当于五种类型的日志都会保存到debug.log中
log4j.appender.D.DatePattern='.'yyyy-MM-dd
log4j.appender.D.layout=org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n

#set the ERROR level information output to the file debug.log
#warn:before write the file error.log, clear it
log4j.appender.E=org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.file=./error.log
log4j.appender.E.Append = false <span style="font-family: Arial, Helvetica, sans-serif;">#注意:每次写文件前,清空,做试验用,默认值为true</span>
log4j.appender.E.Threshold = ERROR <span style="font-family: Arial, Helvetica, sans-serif;">#只有比ERROR级别高的日志才会输出到error.log文件中,相当于error.log文件只保存FATAL和ERROR类型的日志</span>
log4j.appender.E.DatePattern='.'yyyy-MM-dd
log4j.appender.E.layout=org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
(3)优先级说明:log4j中有5种优先级,需要注意的是优先级数据越小其优先级越高(0最高,7最低),当设置某种优先级后,比其高的级别日志都会输出,例如,如果在log4j.rootLogger
=DEBUG,console,file,D,E设置的为DEBUG,则所有级别的日志都会输出,因为DEBUG级别最低。这点在实现不同级别的日志信息写到不同的文件时非常重要。

FATAL 0

ERROR 3

WARN 4

INFO 6

DEBUG 7

2、log4j的初始化

在网上搜了下,发现有三种方式进行初始化:

(1)自动加载配置文件,这个对配置文件的存放位置有要求,我这里的是Java se工程,配置文件放在src目录下;若是放在工程根目录下,加载失败,会出现如下错误:

log4j:WARN No appenders could be found for logger (Log4jTest).
log4j:WARN Please initialize the log4j system properly.
(2)手动加载配置文件,在main方法里利用语句(注意根据配置文件的路径自己调整):

PropertyConfigurator.configure("./log4j.properties");
(3)不用配置文件,直接在代码中设置。

关于log4j的初始化过程,有篇博客以xml格式的配置文件为例,从源码级别上做了解释http://tiangu.iteye.com/blog/1153777

3、log4j实现不同类型的日志输出到不同的文件

这里必须设置log4j.appender.xxx.Threshold属性,只有比该级别高的日志才会输出到该日志文件中。

详见上面的配置文件注释。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: