log4j使用DailyRollingFileAppender   Leave a comment

原文链接:http://www.wenhq.com/article/view_420.html

DailyRollingFileAppender是日志记录软件包Log4J中的一个Appender,它能够按一定的频度滚动日志记录文件。

我们可以按下面的方式配置DailyRollingFileAppender
log4j.rootCategory=INFO,S
log4j.appender.S=org.apache.log4j.DailyRollingFileAppender
log4j.appender.S.File=${catalina.home}/logs/soso
log4j.appender.S.DatePattern=’-‘yyyy-MM-dd’.log’
log4j.appender.S.layout=org.apache.log4j.PatternLayout

log4j.appender.S.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}-%m%n

日志文件为:
soso-2010-01-01.log , soso-2010-01-02.log

在DailyRollingFileAppender中可以指定monthly(每月)、weekly(每周)、daily(每天)、half-daily(每半天)、hourly(每小时)和minutely(每分钟)六个频度,这是通过为 DatePattern选项赋予不同的值来完成的。DatePattern选项的有效值为:

* ‘.’yyyy-MM,对应monthly(每月)

* ‘.’yyyy-ww,对应weekly(每周)

* ‘.’yyyy-MM-dd,对应daily(每天)

* ‘.’yyyy-MM-dd-a,对应half-daily(每半天)

* ‘.’yyyy-MM-dd-HH,对应hourly(每小时)

* ‘.’yyyy-MM-dd-HH-mm,对应minutely(每分钟)

DatePattern中不用处理的文字要放到单引号(‘)中,如上面的(.)。
DatePattern格式化之后的文本作为文件名字的后缀。DailyRollingFileAppender不支持格式化之后的文本作为文件名字的前缀。
DailyRollingFileAppender在每一个日志事件(LoggingEvent)附加(append)之前检查是否需要附加。也就是说如果在一个滚动区间中没有任何日志记录,那么这个区间的日志记录文件就不会形成。

log4j.additivity 是 子Logger 是否继承父Logger 的 输出源(appender)的标志位。具体说,默认情况下,子Logger 会继承父Logger 的appender,也就是说 子Logger 会在父Logger 的appender里输出。若是additivity设为false,则子Logger 只会在自己的appender里输出,而不会在父Logger 的appender里输出。

具体配置如下,需要注意的是, com.wenhq的两个属性additivity和logger必须同时配置,否则不能生效:
log4j.additivity.com.wenhq=false
log4j.logger.com.wenhq =error,wenhq-f
这样就可以让com.wenhq的日志只输出到wenhq-f指定的appender,而不继承父类的appender.
example

log4j.rootCategory=info,console
log4j.logger.abc.log4jTest=debug,console
log4j.additivity.abc.log4jTest=false
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.SimpleLayout

其中abc为包名,log4jTest为类名,log4j.logger为固定的,不能改变!!

基本的格式为:

for root Logger

log4j.rootLogger=[priority], appenderName, apenderName, ….

for Appender 

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

log4j.appender.appenderName.option1=value1

Logger组件的继承关系有以下特点:

  • 如果子类Logger组件没有定义日志级别,则将继承父类的日志级别
  • 如果子类Logger组件定义了日志级别,就不会继承父类的日志级别
  • 在默认情况下,子类Logger组件会继承父类的所有Appender,把他们加入到自己的Appender清单中。
  • 如果把子类的Logger组件的additivity标志设为false,那么它就不会继承父类的Appender. addiivity标志的默认值是true.

例子:

log4j.rootLogger=INFO,console

日志级别=INFO

appender清单=console

log4j.apache.helloappLogger=WARN

日志级别=WARN

appender清单=console(继承)

log4j.apache.helloappLogger.childLogger=,file

日志级别=WARN(继承)

appender清单=console(继承),file

Posted 2012年08月1日 by gw8310 in java

Tagged with , , ,

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: