log4j.properties配置详解

转载 。 https://blog.csdn.net/TheBlackbeard/article/details/70256058

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信息");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

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

log4j.rootLogger=DEBUG, Console ,DFile ,EFILE

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

#DEBUGFile
log4j.appender.DFile = org.apache.log4j.FileAppender
log4j.appender.DFile.File = E://DEBUG.log
log4j.appender.DFile.layout = org.apache.log4j.PatternLayout
log4j.appender.DFile.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n
log4j.appender.DFile.Threshold = DEBUG
log4j.appender.DFile.Append = false

#ERRORFile
log4j.appender.EFILE = org.apache.log4j.FileAppender
log4j.appender.EFILE.File = E://ERROR.log
log4j.appender.EFILE.layout = org.apache.log4j.PatternLayout
log4j.appender.EFILE.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n
log4j.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段内容

#DEBUGFile
log4j.appender.DFile = org.apache.log4j.FileAppender
log4j.appender.DFile.File = E://DEBUG.log
log4j.appender.DFile.layout = org.apache.log4j.PatternLayout
log4j.appender.DFile.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n
log4j.appender.DFile.Threshold = DEBUG
log4j.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
  • 1

指明了输出的地址是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

--------------------- 作者:无扬人生 来源:CSDN 原文:https://blog.csdn.net/TheBlackbeard/article/details/70256058?utm_source=copy 版权声明:本文为博主原创文章,转载请附上博文链接!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章