log4j个人使用整理

Log4j介绍:

  略过。

配置:

  Eclipse项目中添加log4j.jarlib下。

  在bin目录下新建log4j.properties,编辑好log4j配置文件。

样例分析:

 

 1 log4j.rootLogger=WARN, stdout, file
 2 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
 3 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
 4 log4j.appender.stdout.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]:%m%n
 5 
 6 # Output to the File
 7 log4j.appender.file=org.apache.log4j.FileAppender
 8 log4j.appender.file.File=./jdemo.log
 9 log4j.appender.file.MaxFileSize=100k
10 log4j.appender.file.MaxBackupIndex=1
11 log4j.appender.file.layout=org.apache.log4j.PatternLayout
12 log4j.appender.file.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]:%m%n

 

 

 

逐句解释:

1、log4j.rootLogger=WARN, stdout, file,定义了将等级为WARN的日志信息输出到stdout 和file两个目的地。

    Log4j将日志分为七个级别,分别是ALL〈DEBUG〈IFNFO〈WARN〈ERROR〈FATAL〈OFF,OFF不打印,设为          为WARN这样只显示WARN,ERROR,FATAL信息。

    其中rootlLogger表示将对整个工程生效。

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

    org.apache.log4j.JDBCAppender(将日志信息保存到数据库中)


3、log4j.appender.stdout.layout=org.apache.log4j.PatternLayout,定义名为stdout的输出端的layout是哪种类型,这里是PatternLayout (可以灵活的制定布局格式) 

    Log4j提供的layout有以下几种:

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

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

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

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

4、log4j.appender.stdout.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%n,前面一句为stdout指定为灵活布局PatternLayout类型,就需要指定打印信息的具体格式。

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

    %m 输出代码中指定的消息

    %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL

    %r 输出自应用启动到输出该log信息耗费的毫秒数

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

    %t 输出产生该日志事件的线程名

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

    %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:  

    %d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2013年08月28日 16:10:28,921

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

7、log4j.appender.file=org.apache.log4j.FileAppender,和第二行一样,定义了名为file的输出类型,这里是FileAppender文件类    型。

 

8、log4j.appender.file.File=./jdemo.log,定义file的输出文件名为./jdemo.log

 

9、log4j.appender.file.MaxFileSize=100k,最大文件大小

 

10、log4j.appender.file.MaxBackupIndex=1,备份文件个数

 

最后两句和三四句一样,定义了灵活布局格式,并指定输出格式。

 

 

 

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

①、配置根Logger

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

其语法为:

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

其中,level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,只有等于及高于这个级别的才进行处理,则应用程序中所有DEBUG级别的日志信息将不被打印出来。ALL:打印所有的日志,OFF:关闭所有的日志输出。 appenderName就是指定日志信息输出到哪个地方。可同时指定多个输出目的地。

记录器的层次:

rootlogger定义了根记录器

我们还可以定义非根记录器

log4j.logger.loggerName1 = [ level ], appendName1,appendNameN

比如log4j.logger.com.jfinal=INFO stdout

表示日志记录器对com.jfinal 包生效。

②、配置日志信息输出目的地 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(包含日志产生的时间、线程、类别等等信息)

格式化日志信息

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

%m 输出代码中指定的消息

%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL

%r 输出自应用启动到输出该log信息耗费的毫秒数

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

%t 输出产生该日志事件的线程名

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

%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2013年08月28日 16:10:28,921

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

 

 

 

参考:http://www.blogjava.net/zhb8015/articles/382624.html

 

 

posted @ 2013-08-28 16:10  fanhualuodi  阅读(267)  评论(0编辑  收藏  举报