对log4j.properties的一点介绍

来源:互联网 发布:michael jackson 知乎 编辑:程序博客网 时间:2024/06/05 06:27

除去以#开头的注释以及空行,第一行有用的内容是:

1 log4j.rootLogger = DEBUG, CONSOLE,A1

log4j.rootLogger是最最重要的一个属性了,它定义日志信息的“输出级别”和“输出目的地”。关键看“=”后面的值,“DEBUG, CONSOLE,A1”这里我们要把它分成两部分:第一个逗号之前的是第一部分,指定“输出级别”;后面的是第二部分,指定“输出目的地”。可以同时指定多个“输出目的地”,以逗号隔开。

具体到上面这一行:它指定的“输出级别”是“DEBUG”;它指定的“输出目的地”是“CONSOLE”和“A1”。

注意:

         “输出级别”有可选的五个值,分别是DEBUG、INFO、WARN、ERROR、FATAL,它们是由Log4j系统定义的。

         “输出目的地”就是我们自己定义的了,就在log4j.properties的后面部分,此文件定义的“输出目的地”有CONSOLE、FILE、ROLLING_FILE、SOCKET、LF5_APPENDER、MAIL、DATABASE、A1、im。该文件之所以可作主模板,就是因为它比较全面地定义了各种常见的输出目的地(控制台、文件、电子邮件、数据库等)。

        下面详细解释“log4j.rootLogger=DEBUG, CONSOLE,A1”这一行:

         指定“输出级别”是“DEBUG”,即,仅输出级别大于等于“调试(DEBUG)”的日志信息。如果此处指定的是“WARN”则仅调用warn()、error()、fatal()方法输出的日志信息才被输出到“输出目的地”,而调用debug()、info()方法输出的日志信息不被输出到“输出目的地”。明白了吗?Log4j就是以这种方式来过滤控制日志信息的输出与否,这也是对日志信息进行级别分类的目的。         指定“输出目的地”是“CONSOLE”和“A1”,即,将指定的日志信息(根据日志级别已进行了过滤)同时输出到的“控制台”和“SampleMessages.log4j文件”。

为什么说“CONSOLE”表示将日志信息输出到“控制台”呢?那就要看一下后文的定义了:

# 应用于控制台

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppenderlog4j.appender.CONSOLE.Threshold=debuglog4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayoutlog4j.appender.CONSOLE.layout.ConversionPattern=--%-4r %-5p [%t] %37c %3x - %m%n

为什么说“A1”表示将日志信息输出到“SampleMessages.log4j文件”呢?还要看后文的定义:

log4j.appender.A1=org.apache.log4j.RollingFileAppenderlog4j.appender.A1.File=ahoo_web.loglog4j.appender.A1.MaxFileSize=3000KBlog4j.appender.A1.MaxBackupIndex=10log4j.appender.A1.layout=org.apache.log4j.PatternLayoutlog4j.appender.A1.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

注意:这里的定义没有指定输出文件的路径,它的路径实际上是 java.user.path的值。您应该已经注意到,在定义“输出目的地”时,还可以指定日志格式、时间、布局等相关信息。略过。

另外,我可以根据需要,将这一行修改为:

1 log4j.rootLogger = ERROR, CONSOLE,FILE,MAIL

将“错误(ERROR)”及“致命错误(FATAL)”级别的日志信息同时输出到控制台、文件,并且发电子邮件向系统管理员报告。是不是很爽?(如果将“调试(DEBUG)”级别的日志信息邮件给管理员,恐怕迟早会把他/她的邮箱涨爆,哪怕用的是Gmail!再次理解了“将日志信息分为不同级别”的意图了吧?)

 

 3、目前在使用的一个“应用于输出到文件”的log4j.properties设置

log4j.appender.A1=org.apache.log4j.RollingFileAppenderlog4j.appender.A1.File=../workspace/Test_1_Struts_Spring_Hibernate/log/web_ahoo.loglog4j.appender.A1.DatePattern='.'yyyy-MM-dd-HHlog4j.appender.A1.MaxFileSize=2000KBlog4j.appender.A1.MaxBackupIndex=20log4j.appender.A1.layout=org.apache.log4j.PatternLayoutlog4j.appender.A1.layout.ConversionPattern=[%p] %-d{yyyy-MM-dd-HH:mm:ss} [%c]- %m%n
原创粉丝点击