首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 企业软件 > 行业软件 >

log4j配备步骤及说明

2013-03-25 
log4j配置步骤及说明#配置根Loggerlog4j.rootLogger? ? [ level ] ? , ?appenderName1 , ?appenderName2

log4j配置步骤及说明
#配置根Logger
log4j配备步骤及说明log4j.rootLogger? = ? [ level ] ? , ?appenderName1 , ?appenderName2 , ?…
log4j配备步骤及说明
log4j配备步骤及说明#配置日志信息输出目的地Appender
log4j配备步骤及说明log4j.appender.appenderName? = ?fully.qualified.name.of.appender.class?
log4j配备步骤及说明  log4j.appender.appenderName.option1? = ?value1?
log4j配备步骤及说明  …?
log4j配备步骤及说明  log4j.appender.appenderName.optionN? = ?valueN?
log4j配备步骤及说明
log4j配备步骤及说明#配置日志信息的格式(布局)
log4j配备步骤及说明log4j.appender.appenderName.layout? = ?fully.qualified.name.of.layout.class?
log4j配备步骤及说明  log4j.appender.appenderName.layout.option1? = ?value1?
log4j配备步骤及说明  …?
log4j配备步骤及说明  log4j.appender.appenderName.layout.optionN? = ?valueN?

其中 [level] 是日志输出级别,如下:

OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL

?

Appender 为日志输出目的地,Log4j提供的appender有以下几种:

log4j配备步骤及说明org.apache.log4j.ConsoleAppender(控制台),
log4j配备步骤及说明org.apache.log4j.FileAppender(文件),
log4j配备步骤及说明org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
log4j配备步骤及说明org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
log4j配备步骤及说明org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

Layout:日志输出格式,Log4j提供的layout有以下几种:

log4j配备步骤及说明org.apache.log4j.HTMLLayout(以HTML表格形式布局),
log4j配备步骤及说明org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
log4j配备步骤及说明org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
log4j配备步骤及说明org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

当Layout设置为PatternLayout时,可以灵活的指定布局,如下:

log4j配备步骤及说明  %m?? 输出代码中指定的消息
log4j配备步骤及说明  %p?? 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL?
log4j配备步骤及说明  %r?? 输出自应用启动到输出该log信息耗费的毫秒数?
log4j配备步骤及说明  %c?? 输出所属的类目,通常就是所在类的全名?
log4j配备步骤及说明  %t?? 输出产生该日志事件的线程名?
log4j配备步骤及说明  %n?? 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”?
log4j配备步骤及说明  %d?? 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy?MMM?dd?HH:mm:ss , SSS},输出类似:2002年10月18日? 22 : 10 : 28 , 921 ?
log4j配备步骤及说明  %l?? 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java: 10 )?log4j配备步骤及说明

二、配置一个简单的log4j.properties:

在CLASSPATH下建立log4j.properties,配置内容如下:

log4j.rootLogger=INFO, stdout , R

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

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

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

?

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

log4j.appender.R.File=路径/R-name.log

log4j.appender.R.Threshold=INFO

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

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

?

log4j.logger.com.java.hx.common=INFO,R

log4j.logger.org.springframework=ERROR

?

?

三、对于几个特定的地方做一个详细说明:

1、有很多地方讲到rootLogger,还有的地方配置的是rootCategory。查看了下资料,Log4j官方的API中这样描述:

?

public class Categoryextends java.lang.Objectimplements AppenderAttachable

This class has been deprecated and replaced by the?Logger?subclass. It will be kept around to preserve backward compatibility until mid 2003.

Logger?is a subclass of Category, i.e. it extends Category. In other words, a logger?is?a category. Thus, all operations that can be performed on a category can be performed on a logger. Internally, whenever log4j is asked to produce a Category object, it will instead produce a Logger object. Log4j 1.2 will?never?produce Category objects but only?Logger?instances. In order to preserve backward compatibility, methods that previously accepted category objects still continue to accept category objects.

For example, the following are all legal and will work as expected.

    ???// Deprecated form:
???Category cat = Category.getInstance("foo.bar")

???// Preferred form for retrieving loggers:
???Logger logger = Logger.getLogger("foo.bar")

The first form is deprecated and should be avoided.

There is absolutely no need for new client code to use or refer to the?Category?class.?Whenever possible, please avoid referring to it or using it.

See the?short manual?for an introduction on this class.

See the document entitled?preparing for log4j 1.3?for a more detailed discussion.

?

?

Author:
Ceki Gülcü, Anders Kristensen
大概意思就是希望以后改为rootLogger(从1.2版本以后),当然如果继续配置为rootCategory,也不会报错。
只是最好尽量回避使用rootCategory。
2、log4j.appender.C.Threshold的使用很灵活,可以在appender中再次声明打印级别,比如在rootLogger中设置为:DEBUG,在appender中再次利用Threshold设置为INFO,那么该appender对应的文件中log的日志会将DEBUG级别的信息过滤掉。

?

?

热点排行