Log4j使用笔记(一):详细使用步骤及log4j.properties解析

来源:互联网 发布:js做99乘法表知乎 编辑:程序博客网 时间:2024/06/18 16:00

1、log4j实验示例

   在eclipse中新建一个java project如下:

这里写图片描述

   其中TestLog4j.java代码如下:

package cn.zhoucy.test;import org.apache.log4j.Logger;public class TestLog4j {    private static Logger logger=Logger.getLogger(TestLog4j.class); // 获取logger实例     public static void main(String[] args) {        logger.debug("调试debug信息");        logger.info("普通Info信息");        logger.warn("警告warn信息");        logger.error("error信息");               logger.fatal("严重错误fatal信息");    }}

   其中配置文件log4j.properties如下:

log4j.rootLogger=DEBUG, Console ,DFile ,EFILE#Console  log4j.appender.Console=org.apache.log4j.ConsoleAppender  log4j.appender.Console.layout=org.apache.log4j.TTCCLayout  #DEBUGFilelog4j.appender.DFile = org.apache.log4j.FileAppenderlog4j.appender.DFile.File = E://DEBUG.loglog4j.appender.DFile.layout = org.apache.log4j.PatternLayoutlog4j.appender.DFile.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%nlog4j.appender.DFile.Threshold = DEBUGlog4j.appender.DFile.Append = false#ERRORFilelog4j.appender.EFILE = org.apache.log4j.FileAppenderlog4j.appender.EFILE.File = E://ERROR.loglog4j.appender.EFILE.layout = org.apache.log4j.PatternLayoutlog4j.appender.EFILE.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%nlog4j.appender.EFILE.Threshold = ERROR

   运行以后,控制台输出:

这里写图片描述

   然后到E盘根目录下查看,有两个文件生成:
这里写图片描述

   其中DEBUG.log中内容如下:
这里写图片描述

   ERROR.log内容如下:
这里写图片描述

2、log4j.properties文件详解

在整个含有log4j的工程中,所有的配置都通过log4j.properties配置文件来实现,以上面的例子来展开。

2.1、Log4j日志等级

   Log4j根据日志信息的重要程度,分为:
OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL
   FATAL是致命错误;ERROR是错误;WARN是警告;INFO就是一般信息;DEBUG是调试信息。
   其中,OFF表示什么也不记录;ALL表示全纪录,这两个一般都不使用。
   比如说,日志信息的设定为INFO,那么log4j将会记录下FATAL、ERROR、WARN、INFO这几个级别的信息。

2.2、配置文件解析

配置文件第一行:

log4j.rootLogger=DEBUG, Console ,DFile ,EFILE

log4j.rootLogger是根配置属性,后面的参数格式是:
log4j.rootLogger = [ level ] , appenderName, appenderName, …

第一个参数是日志等级,后面可跟多个参数,表示的是要把日志的记录信息输出到什么地方,该例当中,有三个输出地方:
Console 表示输出到控制台;DFile 和EFILE是自己定义的输出地址。有几个输出地址,下面就要几个配置段。本例当中,DFile用来记录debug及以上信息,EFile用来记录error及以上信息。

接下来的3段内容:

2.2.1 第1段内容

#Console  log4j.appender.Console=org.apache.log4j.ConsoleAppender  log4j.appender.Console.layout=org.apache.log4j.TTCCLayout  

其中的#号表示注释,第一行的:

log4j.appender.Console=org.apache.log4j.ConsoleAppender  

就表示输出到控制台,第二行:

log4j.appender.Console.layout=org.apache.log4j.TTCCLayout  

表示的是输出的信息格式,这里layout属性的值可以是:

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

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

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

org.apache.log4j.TTCCLayout(包含线程、类名等信息)
其中一般就使用第2种,这里选择的是第4种,所以输出的信息如下:

[main] DEBUG cn.zhoucy.test.TestLog4j - 调试debug信息[main] INFO cn.zhoucy.test.TestLog4j - 普通Info信息[main] WARN cn.zhoucy.test.TestLog4j - 警告warn信息[main] ERROR cn.zhoucy.test.TestLog4j - error信息[main] FATAL cn.zhoucy.test.TestLog4j - 严重错误fatal信息

等下可以对比DFile和EFile的org.apache.log4j.PatternLayout模式。

2.2.1 第2段内容

#DEBUGFilelog4j.appender.DFile = org.apache.log4j.FileAppenderlog4j.appender.DFile.File = E://DEBUG.loglog4j.appender.DFile.layout = org.apache.log4j.PatternLayoutlog4j.appender.DFile.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%nlog4j.appender.DFile.Threshold = DEBUGlog4j.appender.DFile.Append = false

其中第1行:

log4j.appender.DFile = org.apache.log4j.FileAppender

因为在首行指定了输出地方有DFile,所以这里log4j.appender.后面跟的就是DFile,等式右边就表示这是输出到File文件里去的。

第2行:

log4j.appender.DFile.File = E://DEBUG.log

指明了输出的地址是E://DEBUG.log

第3行:

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

指明输出格式是PatternLayout,这种格式是可以自定义输出的,结合下面一行可以调整输出格式。

第4行:

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

这一行很重要,ConversionPattern 属性表示的是输出的格式定义:

%m 输出代码中指定的消息;%M 输出打印该条日志的方法名;%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL;%r 输出自应用启动到输出该log信息耗费的毫秒数;%c 输出所属的类目,通常就是所在类的全名;%t 输出产生该日志事件的线程名;%n 输出一个回车换行符,Windows平台为"rn”,Unix平台为"n”;%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy-MM-dd HH:mm:ss,SSS},输出类似:2002-10-18 22:10:28,921;%l 输出日志事件的发生位置,及在代码中的行数;

   其中-5这一项表示的是输出的日志级别名称所占的字符数为5,不足5个字符的用空格补全,其实就是起到对齐的作用,方便查看日志内容。这一行的配置一般就使用本例的格式即可。

第5行

log4j.appender.DFile.Threshold = DEBUG

表示的是输出到DFile地址的日志信息的级别,当然这里的级别需要在log4j.properties的首行级别定义的管制之下,比如说,首行配置的级别是INFO,那么这里即使配置了DEBUG,也没办法将DEBUG信息输出到DFile中。

第6行

log4j.appender.DFile.Append = false

这里的Append属性,表示的是日志文件是否追加,默认就是true,表示追加,即下一次的信息追加在后面,如果设置为false则表示不追加,那就是以覆盖的方式来记录日志,一般不会选这种方式。这里选了覆盖,EFile中的Append属性,没有设置,默认则是追加。

2.2.1 第3段内容

   这里几乎和第2段都有对应,只讲一下第5行:

log4j.appender.EFILE.Threshold = ERROR

   这里表示的是,只把ERROR即以上信息(包含FATAL)输出记录到EFile,其实本例的目的就是说,将ERROR的信息单独记录出来,方便进行查看。

附:log4j-1.2.17下载地址http://download.csdn.net/detail/theblackbeard/9820176

0 0
原创粉丝点击