为不同的 Appender 设置日志输出级别:

来源:互联网 发布:那曲数控编程人才网 编辑:程序博客网 时间:2024/05/18 08:31

例子:http://blog.csdn.net/seakingwy/archive/2006/10/30/1357276.aspx

 

                            Log4J配置

                                                        2008/12/02

一.log4j

简单的说log4j就是帮助开发人员进行日志输出管理的API类库。它最重要的特点就

是可以配置文件灵活的设置日志信息的优先级、日志信息的输出目的地以及日志信息的输出格式。

Log4j除了可以记录程序运行日志信息外还有一重要的功能就是用来显示调试信息。程序员经常会遇到脱离java ide环境调试程序的情况,这时大多数人会选择使用System.out.println语句输出某个变量值的方法进行调试。这样会带来一个非常麻烦的问题:一旦哪天程序员决定不要显示这些System.out.println的东西了就只能一行行的把这些垃圾语句注释掉。若哪天又需调试变量值,则只能再一行行去掉这些注释恢复System.out.println语句。使用log4j可以很好的处理类似情况。

 

二.log4j使用方法

1、定配置文件

   首先使用配置文件将使我用程序更加灵活配置log日志出方式包括出目的地、出格式。Log4j支持两配置文件格式,一XML格式的文件,一Java特性文件log4j.properties=)。下面将介使用log4j.properties文件作配置文件的方法:

1配置根Logger,其

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

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

例:log4j.rootCategory=INFO,stdout,Runlog,Errorlog 日志类别为INFODEBUG将被屏蔽,其他的将被出。 stdout,Runlog,Errorlog别为3出目的地

2、常用出格式

 -X:X信息对齐
 %p:
日志信息级别
 %d{}:
日志信息时间
 %c:
日志信息所在地(名)
 %m:
生的日志具体信息
 %n:
出日志信息

 例:
log4j.appender.stdout.layout.ConversionPattern= %5p %d{yyyy-MM-dd HH:mm:ss} %c %m %n
log4j.appender.Runlog.layout.ConversionPattern= %5p %d{yyyy-MM-dd HH:mm:ss} %c %m %n
log4j.appender.Errorlog.layout.ConversionPattern= %5p %d{yyyy-MM-dd HH:mm:ss} %c %m %n

3.目的地

配置日志信息输出目的地Appender,其
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
...
log4j.appender.appenderName.option = valueN
appenderName
就是指定日志信息出到哪个地方。您可以同指定多个出目的地。

log4j支持的出目的地:
org.apache.log4j.ConsoleAppender
控制台
org.apache.log4j.FileAppender
文件
org.apache.log4j.DailyRollingFileAppender
生一个日志文件
org.apache.log4j.RollingFileAppender
(文件大小到达指定尺寸的生一个新的文件),
org.apache.log4j.WriterAppender
(将日志信息以流格式送到任意指定的地方)
org.apache.log4j.net.SMTPAppender

org.apache.log4j.jdbc.JDBCAppender
数据
其他如:GUI件、甚至是套接口服器、NT的事件记录器、UNIX Syslog护进程等

例:
出到控制台
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
(指定出到控制台)
log4j.appender.Threshold=DEBUG
(指定类别
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
(指定出布局)
log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
(指定出格式)

出到文件(轮换"日志文件",当日志文件达到指定大小文件就被关闭份,然后建一个新的日志文件) 

 log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender(指定出到文件)
  log4j.appender.ROLLING_FILE.Threshold=ERROR
(指定类别
  log4j.appender.ROLLING_FILE.File=
D:/logs/rolling.log(指定出的路径及文件名)
   log4j.appender.ROLLING_FILE.MaxFileSize=10KB
(指定出到文件的大小)
  log4j.appender.ROLLING_FILE.MaxBackupIndex=1
*
  log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
(指定采用出布局)
  log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
(指定采用出格式)

 

2. 在要出日志的类(Hello.java中加入相关语句:

  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例如:hello.class

  3.然后在方法中记录日志:

   if (log.isInfoEnabled())
{
log.info("
welcome
");
}
 

 

问题: 利用springconsol:::e打印出log4j:WARN Please initialize the log4j system properly

解决:说明你log4j.properties没有配置。log4j.properties放到工程的classpath中,eclipseclasspathbin,由于编译src下的文件会拷bin下,所以你可以把log4j.properties放到src

 

*当存的文件数目超maxBackupIndex+1,会除最早生成的文件,整个文件数目等于maxBackupIndex+1