Commons-logging + Log4j 入门指南(2)

导读:
   总结
  将commons-logging和Log4j的jar包都放置到classpath下,同时也将Log4j的配置文件放到classpath中,两者就可以很好的合作。
  采用Log4j配合commons-logging作为日志系统,是目前Java领域非常非常流行的模式,使用非常非常的普遍。两者的结合带来的结果就是:简单+ 强大。
  commons-logging提供了简捷、统一的接口,不需要额外配置,简单;
  Log4j功能非常全面、强大;
  commons-logging仅仅对Log4j(当然还包括其它LOG实现)作了一层包装,具体的日志输出还是在内部转交给身后的Log4j来处理;而Log4j虽然做了所有的事情,却甘作绿叶,从不以真身示人。
  两者堪称绝配。
   log4j.properties 的一点介绍
  下面对log4j.properties文件内容作一点点介绍,以后文所附log4j.properties文件为例:
  除去以#开头的注释以及空行,第一行有用的内容是:
   log4j.rootLogger = DEBUG, CONSOLE,A1
  log4j.rootLogger是最最重要的一个属性了,它定义日志信息的“输出级别”和“输出目的地”。
  关键看“=”后面的值,“DEBUG, CONSOLE,A1”这里我们要把它分成两部分:第一个逗号之前的是第一部分,指定“输出级别”;后面的是第二部分,指定“输出目的地”。可以同时指定多个“输出目的地”,以逗号隔开。
   具体到上面这一行:它指定的“输出级别”是“ DEBUG ”;它指定的“输出目的地”是“ CONSOLE ”和“ A1 ”。
  注意:
  l “输出级别”有可选的五个值,分别是DEBUG、INFO、WARN、ERROR、FATAL,它们是由Log4j系统定义的。
  l “输出目的地”就是我们自己定义的了,就在log4j.properties的后面部分,此文件定义的“输出目的地”有CONSOLE、FILE、ROLLING_FILE、SOCKET、LF5_APPENDER、MAIL、DATABASE、A1、im。该文件之所以可作主模板,就是因为它比较全面地定义了各种常见的输出目的地(控制台、文件、电子邮件、数据库等)。
  好,下面详细解释“log4j.rootLogger=DEBUG, CONSOLE,A1”这一行:
  l 指定“输出级别”是“DEBUG”,即,仅输出级别 大于等于“调试(DEBUG)”的日志信息。如果此处指定的是“WARN”则仅调用warn()、error()、fatal()方法输出的日志信息才被输出到“输出目的地”,而调用debug()、info()方法输出的日志信息不被输出到“输出目的地”。明白了吗?Log4j就是以这种方式来过滤控制日志信息的输出与否,这也是对日志信息进行级别分类的目的。
  l 指定“输出目的地”是“CONSOLE”和“A1”,即,将指定的日志信息(根据日志级别已进行了过滤)同时输出到的“控制台”和“SampleMessages.log4j文件”。
  为什么说“CONSOLE”表示将日志信息输出到“控制台”呢?那就要看一下后文的定义了:
  # 应用于控制台
  log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
  log4j.appender.Threshold=DEBUG
  log4j.appender.CONSOLE.Target= System.out
  log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
  log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
  #log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n
  为什么说“A1”表示将日志信息输出到“SampleMessages.log4j文件”呢?还要看后文的定义:
  log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
  log4j.appender.A1.File= SampleMessages.log4j
  log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j'
  log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout
  注意:这里的定义没有指定输出文件的路径,它的路径实际上是java.user.path的值。
  您应该已经注意到,在定义“输出目的地”时,还可以指定日志格式、时间、布局等相关信息。略过。
  好了,我可以根据需要,将这一行修改为:
   log4j.rootLogger = ERROR, CONSOLE,FILE,MAIL
  将“错误(ERROR)”及“致命错误(FATAL)”级别的日志信息同时输出到控制台、文件,并且发电子邮件向系统管理员报告。是不是很爽?(如果将“调试(DEBUG)”级别的日志信息邮件给管理员,恐怕迟早会把他/她的邮箱涨爆,哪怕用的是Gmail!再次理解了“将日志信息分为不同级别”的意图了吧?)
   附:一个有用的 log4j.properties 文件模板
  ##Log4J的配置之简单使它遍及于越来越多的应用中了
  ##Log4J配置文件实现了输出到控制台、文件、回滚文件、发送日志邮件、输出到数据库日志表、自定义标签等全套功能。择其一二使用就够用了。
  ##此文件(log4j.properties)内容来自网络,非本文作者liigo原创。
  log4j.rootLogger=DEBUG, CONSOLE,A1
  log4j.addivity.org.apache=true
  # 应用于控制台
  log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
  log4j.appender.Threshold=DEBUG
  log4j.appender.CONSOLE.Target=System.out
  log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
  log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
  #log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n
  #应用于文件
  log4j.appender.FILE=org.apache.log4j.FileAppender
  log4j.appender.FILE.File=file.log
  log4j.appender.FILE.Append=false
  log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
  log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
  # Use this layout for LogFactor 5 analysis
  # 应用于文件回滚
  log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
  log4j.appender.ROLLING_FILE.Threshold=ERROR
  log4j.appender.ROLLING_FILE.File=rolling.log
  log4j.appender.ROLLING_FILE.Append=true
  log4j.appender.ROLLING_FILE.MaxFileSize=10KB
  log4j.appender.ROLLING_FILE.MaxBackupIndex=1
  log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
  log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
  #应用于socket
  log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender
  log4j.appender.SOCKET.RemoteHost=localhost
  log4j.appender.SOCKET.Port=5001
  log4j.appender.SOCKET.LocationInfo=true
  # Set up for Log Facter 5
  log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout
  log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n
  # Log Factor 5 Appender
  log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender
  log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000
  # 发送日志给邮件
  log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
  log4j.appender.MAIL.Threshold=FATAL
  log4j.appender.MAIL.BufferSize=10
  log4j.appender.MAIL.From=web@www.wuset.com
  log4j.appender.MAIL.SMTPHost=www.wusetu.com
  log4j.appender.MAIL.Subject=Log4J Message
  log4j.appender.MAIL.To=web@www.wusetu.com
  log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
  log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
  # 用于数据库
  log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
  log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
  log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
  log4j.appender.DATABASE.user=root
  log4j.appender.DATABASE.password=
  log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')
  log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
  log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
  log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
  log4j.appender.A1.File=SampleMessages.log4j
  log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j'
  log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout
  #自定义Appender
  log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender
  log4j.appender.im.host = mail.cybercorlin.net
  log4j.appender.im.username = username
  log4j.appender.im.password = password
  log4j.appender.im.recipient = corlin@cybercorlin.net
  log4j.appender.im.layout=org.apache.log4j.PatternLayout
  log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
  # 结束
  参考资料
  http://jakarta.apache.org/commons/logging/
  http://logging.apache.org/log4j/docs/

本文转自
http://hi.baidu.com/sunjz/blog/item/658e237313a3f41d8701b0b8.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值