Log4j配置详解

来源:互联网 发布:淘宝兼职怎么找 编辑:程序博客网 时间:2024/06/05 06:06

强调可重用开发的今天,除了自己从到尾开发一个可重用的日志操作外,Apache提供了一个有力的日志操作包-Log4j

Log4j
Apache的一个放源代码项目,通使用Log4j,我可以控制日志信息送的目的地是控制台、文件、GUI件、甚至是套接口服器、NT的事件记录器、UNIX Syslog护进程等;我也可以控制一条日志的出格式;通义每一条日志信息的级别,我更加致地控制日志的生成程。最令人感趣的就是,些可以通一个配置文件来灵活地行配置,而不需要修改用的代

此外,通Log4j其他言接口,您可以在CC++.NetPL/SQL程序中使用Log4j,其法和用法与在Java程序中一,使得多言分布式系得到一个一一致的日志件模。而且,通使用各第三方展,您可以很方便地将Log4j集成到J2EEJINI甚至是SNMP用中。

明:下面分三部分,第一部分解如何配置log4j,第二部分为对log4j.properties配置文件中的各个属性的解,第三部分为对log4j详细讲解,如果只想配置上log4j,那只需要看前两个部分就可以,如果想log4j深入了解,则还需看第三部分。

一、Log4j配置

第一
:加入log4j-1.2.8.jarlib下。

第二
:在CLASSPATH下建立log4j.properties。内容如下:

1 log4j.rootCategory=INFO, stdout , R

2

3 log4j.appender.stdout=org.apache.log4j.ConsoleAppender

4 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

5 log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n

6

7 log4j.appender.R=org.apache.log4j.DailyRollingFileAppender

8 log4j.appender.R.File=D:/Tomcat 5.5/logs/qc.log

9 log4j.appender.R.layout=org.apache.log4j.PatternLayout

10 log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n

11

12 log4j.logger.com.neusoft=DEBUG

13 log4j.logger.com.opensymphony.oscache=ERROR

14 log4j.logger.net.sf.navigator=ERROR

15 log4j.logger.org.apache.commons=ERROR

16 log4j.logger.org.apache.struts=WARN

17 log4j.logger.org.displaytag=ERROR

18 log4j.logger.org.springframework=DEBUG

19 log4j.logger.com.ibatis.db=WARN

20 log4j.logger.org.apache.velocity=FATAL

21

22 log4j.logger.com.canoo.webtest=WARN

23

24 log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN

25 log4j.logger.org.hibernate=DEBUG

26 log4j.logger.org.logicalcobwebs=WARN

第三
:相的修改其中属性,修改之前就必知道些都是干什的,在第二部分解。

第四
:在要出日志的中加入相关语句:

属性:protected final Log log = LogFactory.getLog(getClass());

在相
的方法中:

if (log.isDebugEnabled())

{

log.debug(“System …..”);

}

二、Log4j


1 log4j.rootCategory=INFO, stdout , R

此句
将等级为INFO的日志信息出到stdoutR两个目的地,stdoutR的定在下面的代,可以任意起名。等可分OFFFATALERRORWARNINFODEBUGALL,如果配置OFF不打出任何信息,如果配置INFO这样INFO, WARN, ERRORlog信息,而DEBUG信息不会被示,具体解可参照第三部分定配置文件中的logger

3 log4j.appender.stdout=org.apache.log4j.ConsoleAppender

此句
stdout出端是哪种类型,可以是

org.apache.log4j.ConsoleAppender
(控制台),

org.apache.log4j.FileAppender
(文件),

org.apache.log4j.DailyRollingFileAppender
生一个日志文件),

org.apache.log4j.RollingFileAppender
(文件大小到达指定尺寸的
生一个新的文件)

org.apache.log4j.WriterAppender
(将日志信息以流格式
送到任意指定的地方)

具体
解可参照第三部分定配置文件中的Appender

4 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

此句
stdout出端的layout是哪种类型,可以是

org.apache.log4j.HTMLLayout
(以HTML表格形式布局),

org.apache.log4j.PatternLayout
(可以灵活地指定布局模式),

org.apache.log4j.SimpleLayout
(包含日志信息的
级别和信息字符串),

org.apache.log4j.TTCCLayout
(包含日志
生的时间线程、类别等等信息)

具体
解可参照第三部分定配置文件中的Layout

5 log4j.appender.stdout.layout.ConversionPattern= [QC] %p [%t] %C.%M(%L) | %m%n

如果使用pattern布局就要指定的打印信息的具体格式ConversionPattern,打印参数如下:

%m
出代中指定的消息

%p
,即DEBUGINFOWARNERRO***TAL

%r
出自用启log信息耗的毫秒数

%c
出所属的目,通常就是所在的全名

%t
日志事件的线程名

%n
出一个回车换行符,Windows平台“rn”Unix平台“n”

%d
出日志时间点的日期或时间,默格式ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS}似:20021018 221028921

%l
出日志事件的生位置,包括目名、生的线程,以及在代中的行数。

%C: Outputs the fully-qualified class name of the caller issuing the logging request. Example: For the class name "org.apache.xyz.SomeClass", the pattern %C{1} will output "SomeClass". {1} means "output last one component of the fully-qualified class name". If no {n} is there, full class name is output by default.
%M: Outputs the method name where the logging request was issued.
%F: Outputs the file name where the logging request was issued.
%L: Outputs the line number from where the logging request was issued.

[QC]log信息的开头,可以任意字符,一般为项称。

出的信息

[TS] DEBUG [main] AbstractBeanFactory.getBean(189) | Returning cached instance of singleton bean 'MyAutoProxy'

具体
解可参照第三部分定配置文件中的格式化日志信息。

7 log4j.appender.R=org.apache.log4j.DailyRollingFileAppender

此句与第3行一
。定R出端的为每生一个日志文件。

8 log4j.appender.R.File=D:/Tomcat 5.5/logs/qc.log

此句
R出端的文件名D:/Tomcat 5.5/logs/qc.log

可以自行修改。

9 log4j.appender.R.layout=org.apache.log4j.PatternLayout

与第4行相同。

10 log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n

与第5行相同。

12 log4j.logger.com. neusoft =DEBUG

指定com.neusoft包下的所有
的等级为DEBUG

可以把com.neusoft
自己目所用的包名。

13 log4j.logger.com.opensymphony.oscache=ERROR

14 log4j.logger.net.sf.navigator=ERROR

两句是把两个包下出错误的等级设为ERROR,如果目中没有配置EHCache不需要两句。

15 log4j.logger.org.apache.commons=ERROR

16 log4j.logger.org.apache.struts=WARN

两句是struts的包。

17 log4j.logger.org.displaytag=ERROR

句是displaytag的包。(QC问题列表面所用)

18 log4j.logger.org.springframework=DEBUG

此句
Spring的包。

24 log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN

25 log4j.logger.org.hibernate=DEBUG

此两句是hibernate的包。

以上些包的置可根据目的实际情况而自行定制。

三、log4j

1
、定
配置文件

Log4j
支持两
配置文件格式,一XML格式的文件,一Java特性文件log4j.properties=)。下面将介使用log4j.properties文件作配置文件的方法:

、配置根Logger

Logger
负责处理日志记录的大部分操作。



log4j.rootLogger = [ level ] , appenderName, appenderName, …

其中,level 是日志
记录,分OFFFATALERRORWARNINFODEBUGALL或者自定级别Log4j只使用四个级别从高到低分ERRORWARNINFODEBUG。通里定级别,您可以控制到用程序中相应级别的日志信息的开关。比如在里定INFO级别,只有等于及高于级别的才理,则应用程序中所有DEBUG级别的日志信息将不被打印出来。ALL:打印所有的日志,OFF关闭所有的日志出。 appenderName就是指定日志信息出到哪个地方。可同指定多个出目的地。

、配置日志信息出目的地 Appender

Appender
负责控制日志记录操作的出。



log4j.appender.appenderName = fully.qualified.name.of.appender.class

log4j.appender.appenderName.option1 = value1



log4j.appender.appenderName.optionN = valueN

里的appenderName里定的,可任意起名。

其中,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
(将日志信息以流格式
送到任意指定的地方)

例如:log4j.appender.stdout=org.apache.log4j.ConsoleAppender

一个名stdout出目的地,ConsoleAppender控制台。

、配置日志信息的格式(布局)Layout

Layout
负责格式化Appender出。



log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class

log4j.appender.appenderName.layout.option1 = value1



log4j.appender.appenderName.layout.optionN = valueN

其中,Log4j提供的layout有以下几


org.apache.log4j.HTMLLayout
(以HTML表格形式布局),

org.apache.log4j.PatternLayout
(可以灵活地指定布局模式),

org.apache.log4j.SimpleLayout
(包含日志信息的
级别和信息字符串),

org.apache.log4j.TTCCLayout
(包含日志
生的时间线程、类别等等信息)

2
、格式化日志信息

Log4J
采用
C言中的printf函数的打印格式格式化日志信息,打印参数如下:

%m
出代中指定的消息

%p
,即DEBUGINFOWARNERRO***TAL

%r
出自用启log信息耗的毫秒数

%c
出所属的目,通常就是所在的全名

%t
日志事件的线程名

%n
出一个回车换行符,Windows平台“rn”Unix平台“n”

%d
出日志时间点的日期或时间,默格式ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS}似:20021018 221028921

%l
出日志事件的生位置,包括目名、生的线程,以及在代中的行数。

3
、在代
中使用Log4j

在需要出日志信息的中做如下的三个工作:

1
入所有需的commongs-logging

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

2
、在自己的
中定一个org.apache.commons.logging.Log的私有静态类

private final Log log = LogFactory.getLog(getClass());

LogFactory.getLog()
方法的参数使用的是当前
class

原创粉丝点击