转载 。 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 版权声明:本文为博主原创文章,转载请附上博文链接!