`

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

阅读更多

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

# 应用于控制台 

1 log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender 
2 log4j.appender.Threshold = DEBUG 
3 log4j.appender.CONSOLE.Target = System.out 
4 log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout 
5 log4j.appender.CONSOLE.layout.ConversionPattern = [framework]  % d  -   % c  -%- 4r [ % t]  %- 5p  % c  % x  -   % m % n 
6  #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文件”呢?还要看后文的定义: 

1 log4j.appender.A1 = org.apache.log4j.DailyRollingFileAppender 
2 log4j.appender.A1.File = SampleMessages.log4j 
3 log4j.appender.A1.DatePattern = yyyyMMdd - HH ' .log4j '  
4 log4j.appender.A1.layout = org.apache.log4j.xml.XMLLayout  
注意:这里的定义没有指定输出文件的路径,它的路径实际上是 java.user.path的值。 
您应该已经注意到,在定义“输出目的地”时,还可以指定日志格式、时间、布局等相关信息。略过。 

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

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

附:一个有用的log4j.properties文件模板 


Java代码  收藏代码
  1.  ##Log4J的配置之简单使它遍及于越来越多的应用中了  
  2.   
  3. ##Log4J配置文件实现了输出到控制台、文件、回滚文件、发送日志邮件、输出到数据库日志表、自定义标签等全套功能。择其一二使用就够用了。  
  4.   
  5. ##此文件(log4j.properties)内容来自网络,非本文作者liigo原创。  
  6. log4j.rootLogger = DEBUG, CONSOLE,A1  
  7. log4j.addivity.org.apache = true    
  8.   
  9. # 应用于控制台   
  10. log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender   
  11. log4j.appender.Threshold = DEBUG   
  12. log4j.appender.CONSOLE.Target = System.out   
  13. log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout   
  14. log4j.appender.CONSOLE.layout.ConversionPattern = [framework]  % d  -   % c  -%- 4r [ % t]  %- 5p  % c  % x  -   % m % n   
  15. #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   
  16.   
  17. #应用于文件  
  18. log4j.appender.FILE = org.apache.log4j.FileAppender   
  19. log4j.appender.FILE.File = file.log   
  20. log4j.appender.FILE.Append = false    
  21. log4j.appender.FILE.layout = org.apache.log4j.PatternLayout   
  22. log4j.appender.FILE.layout.ConversionPattern = [framework]  % d  -   % c  -%- 4r [ % t]  %- 5p  % c  % x  -   % m % n   
  23. # Use  this  layout  for  LogFactor  5  analysis   
  24.   
  25. # 应用于文件回滚   
  26. log4j.appender.ROLLING_FILE = org.apache.log4j.RollingFileAppender   
  27. log4j.appender.ROLLING_FILE.Threshold = ERROR   
  28. log4j.appender.ROLLING_FILE.File = rolling.log   
  29. log4j.appender.ROLLING_FILE.Append = true    
  30. log4j.appender.ROLLING_FILE.MaxFileSize = 10KB   
  31. log4j.appender.ROLLING_FILE.MaxBackupIndex = 1    
  32. log4j.appender.ROLLING_FILE.layout = org.apache.log4j.PatternLayout   
  33. log4j.appender.ROLLING_FILE.layout.ConversionPattern = [framework]  % d  -   % c  -%- 4r [ % t]  %- 5p  % c  % x  -   % m % n   
  34.   
  35. #应用于socket   
  36. log4j.appender.SOCKET = org.apache.log4j.RollingFileAppender   
  37. log4j.appender.SOCKET.RemoteHost = localhost   
  38. log4j.appender.SOCKET.Port = 5001    
  39. log4j.appender.SOCKET.LocationInfo = true    
  40. # Set up  for  Log Facter  5    
  41. log4j.appender.SOCKET.layout = org.apache.log4j.PatternLayout   
  42. 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   
  43.   
  44. # Log Factor  5  Appender   
  45. log4j.appender.LF5_APPENDER = org.apache.log4j.lf5.LF5Appender   
  46. log4j.appender.LF5_APPENDER.MaxNumberOfRecords = 2000    
  47.   
  48. # 发送日志给邮件   
  49. log4j.appender.MAIL = org.apache.log4j.net.SMTPAppender   
  50. log4j.appender.MAIL.Threshold = FATA  
  51. log4j.appender.MAIL.BufferSize = 10    
  52. log4j.appender.MAIL.From = web@www.wuset.com  
  53. log4j.appender.MAIL.SMTPHost = www.wusetu.com   
  54. log4j.appender.MAIL.Subject = Log4J Message   
  55. log4j.appender.MAIL.To = web@www.wusetu.com  
  56. log4j.appender.MAIL.layout = org.apache.log4j.PatternLayout   
  57. log4j.appender.MAIL.layout.ConversionPattern = [framework]  % d  -   % c  -%- 4r [ % t]  %- 5p  % c  % x  -   % m % n   
  58.   
  59.   
  60. # 用于数据库   
  61. log4j.appender.DATABASE = org.apache.log4j.jdbc.JDBCAppender   
  62. log4j.appender.DATABASE.URL = jdbc:mysql: // localhost:3306/test    
  63. log4j.appender.DATABASE.driver = com.mysql.jdbc.Driver   
  64. log4j.appender.DATABASE.user = root   
  65. log4j.appender.DATABASE.password =    
  66. log4j.appender.DATABASE.sql = INSERT INTO LOG4J (Message) VALUES ( ' [framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n ' )   
  67. log4j.appender.DATABASE.layout = org.apache.log4j.PatternLayout   
  68. log4j.appender.DATABASE.layout.ConversionPattern = [framework]  % d  -   % c  -%- 4r [ % t]  %- 5p  % c  % x  -   % m % n   
  69. log4j.appender.A1 = org.apache.log4j.DailyRollingFileAppender   
  70. log4j.appender.A1.File = SampleMessages.log4j   
  71. log4j.appender.A1.DatePattern = yyyyMMdd - HH ' .log4j '    
  72. log4j.appender.A1.layout = org.apache.log4j.xml.XMLLayout   
  73.   
  74. #自定义Appender   
  75. log4j.appender.im  =  net.cybercorlin.util.logger.appender.IMAppender   
  76. log4j.appender.im.host  =  mail.cybercorlin.net   
  77. log4j.appender.im.username  =  username   
  78. log4j.appender.im.password  =  password   
  79. log4j.appender.im.recipient  =  corlin@cybercorlin.net  
  80. log4j.appender.im.layout = org.apache.log4j.PatternLayout   
  81. log4j.appender.im.layout.ConversionPattern  = [framework]  % d  -   % c  -%- 4r [ % t]  %- 5p  % c  % x  -   % m % n  
  82.   
  83. # 结束   
  84. ///////////////
  85. Apache Commons包中的一个,包含了日志功能,必须使用的jar包。这个包本身包含了一个Simple Logger,但是功能很弱。在运行的时候它会先在CLASSPATH找log4j,如果有,就使用log4j,如果没有,就找JDK1.4带的java.util.logging,如果也找不到就用Simple Logger。     

         commons-logging.jar的出现是一个历史的的遗留的遗憾,当初Apache极力游说Sun把log4j加入JDK1.4,然而JDK1.4项目小组已经接近发布JDK1.4产品的时间了,因此拒绝了Apache的要求,使用自己的java.util.logging,这个包的功能比log4j差的很远,性能也一般。后来Apache就开发出来了commons-logging.jar用来兼容两个logger。因此用commons-logging.jar写的log程序,底层的Logger是可以切换的,你可以选择log4j,java.util.logging或者它自带的Simple Logger。不过我仍然强烈建议使用log4j,因为log4j性能很高,log输出信息时间几乎等于System.out,而处理一条log平均只需要5us。

          你可以在Hibernate的src目录下找到Hibernate已经为你准备好了的log4j的配置文件,你只需要到Apache 网站去下载log4j就可以了。commons-logging.jar也是必须的jar包。

分享到:
评论

相关推荐

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

    《Commons-Logging + Log4j 入门指南》 在Java编程中,日志记录是必不可少的一部分,它有助于调试、性能分析以及故障排查。Apache Commons Logging和Log4j是两个广泛使用的日志框架,本指南将深入讲解如何将它们...

    Commons-logging + Log4j 使用

    `commons-logging`会自动检测并选择可用的日志实现,优先级通常是:已配置的`commons-logging.properties`、系统环境变量`org.apache.commons.logging.Log`、`log4j`库、JDK内置日志、最后是`commons-logging`自带的...

    为什么同时使用commons-logging和Log4j

    ### 为什么同时使用commons-logging和Log4j 在探讨为何开发者可能会选择同时使用commons-logging和Log4j之前,我们需要先了解这两种日志框架的基本特性和用途。 #### commons-logging简介 commons-logging是由...

    日志框架学习之一:commons-logging+log4j

    2. **使用API**:讲解如何在代码中通过commons-logging接口来调用log4j的记录方法,如`Logger.getLogger()`获取logger实例,以及`debug()`, `info()`, `warn()`, `error()`等不同级别的日志记录方法。 3. **日志...

    commons-logging.jar

    commons-logging-1.0-javadoc.jar, commons-logging-1.0.1-javadoc.jar, commons-logging-1.0.1.jar, commons-logging-1.0.2-javadoc.jar, commons-logging-1.0.2.jar, commons-logging-1.0.3-javadoc.jar, commons-...

    apache-log4j-2.3-bin和commons-logging-1.2

    Apache Log4j 2.3 和 Commons Logging 1.2 是两个在Java Web开发中广泛使用的日志处理库。这两个库对于记录应用程序的运行时信息、调试错误和监控系统状态至关重要。 **Apache Log4j 2.3** Log4j 是 Apache 组织...

    commons-logging和Log4j的关系

    标题中的“commons-logging”和“Log4j”是两个在Java编程中广泛使用的日志处理框架。它们在日志管理领域中各自扮演着不同的角色,而它们之间的关系则涉及到日志实现的抽象与具体实现的层次问题。 首先,让我们了解...

    log4j.jar和commons-logging.jar

    由于commons-logging的存在,你无需直接使用log4j的类,而是通过`java.util.logging.Logger`的接口来实现日志记录,commons-logging会自动找到log4j作为底层实现。 总之,log4j.jar和commons-logging.jar是Java开发...

    commons-logging-1.2-bin.zip下载

    Commons Logging 提供了一组接口和辅助类,使得应用程序可以透明地使用任何兼容的日志实现,如Log4j、Java内置的日志API(java.util.logging)或者简单的控制台输出。这个库的主要优点是灵活性和可插拔性,开发者...

    commons-dbcp-2-2.50+commons-pool2-2.6.0+commons-logging-1.2

    - Commons Logging是一个轻量级的日志记录API,允许开发者在不修改代码的情况下切换不同的日志实现,如Log4j、Java Util Logging或SLF4J。 - 版本 1.2 是一个稳定版本,虽然较旧但广泛兼容,为各种Java项目提供...

    spring-framework & commons-logging

    spring-framework & commons-logging spring-framework & commons-logging spring-framework & commons-logging spring-framework & commons-logging spring-framework & commons-logging spring-framework & ...

    commons-logging-1.1.3.jar

    用户可以自由选择第三方的日志组件作为具体实现,像log4j,或者jdk自带的logging, common-logging会通过动态查找的机制,在程序运行时自动找出真正使用的日志库。当然,common-logging内部有一个Simple logger的...

    commons-logging-1.2_commonslogging_

    2. 配置日志实现,可以通过设置`java.util.logging.config.file`、`log4j.configuration`等系统属性,或者在类路径下放置适当的配置文件(如log4j.properties)。 3. 在代码中获取并使用Logger,如`Logger logger = ...

    commons-logging-1.2.JAR开源包

    Apache Commons Logging,简称为Commons Logging,是Apache软件基金会开发的一个开源日志框架,主要用于提供一个统一的日志API,让开发者能够在不改变代码的情况下,自由切换不同的日志实现库,如Log4j、Java内置的...

    commons-logging-1.2-API文档-中英对照版.zip

    赠送jar包:commons-logging-1.2.jar; 赠送原API文档:commons-logging-1.2-javadoc.jar; 赠送源代码:commons-logging-1.2-sources.jar; 包含翻译后的API文档:commons-logging-1.2-javadoc-API文档-中文...

    commons-logging-1.1.3-API文档-中文版.zip

    赠送jar包:commons-logging-1.1.3.jar; 赠送原API文档:commons-logging-1.1.3-javadoc.jar; 赠送源代码:commons-logging-1.1.3-sources.jar; 赠送Maven依赖信息文件:commons-logging-1.1.3.pom; 包含翻译后...

    commons-logging-1.2-API文档-中文版.zip

    赠送jar包:commons-logging-1.2.jar; 赠送原API文档:commons-logging-1.2-javadoc.jar; 赠送源代码:commons-logging-1.2-sources.jar; 包含翻译后的API文档:commons-logging-1.2-javadoc-API文档-中文...

    commons-logging-1.1.3-API文档-中英对照版 (2).zip

    赠送jar包:commons-logging-1.1.3.jar; 赠送原API文档:commons-logging-1.1.3-javadoc.jar; 赠送源代码:commons-logging-1.1.3-sources.jar; 赠送Maven依赖信息文件:commons-logging-1.1.3.pom; 包含翻译后...

    log4j.jar\commons-logging-1.1.1.jar

    log4j日志包 log4j.jar\commons-logging-1.1.1.jar private static final Log log = LogFactory.getLog(xxxxxx.class); 下载后解压就能得到这两个包

    commons-logging.jar log4j.jar

    "commons-logging.jar" 和 "log4j.jar" 是两个广泛使用的Java日志框架,它们在Java应用开发中扮演着至关重要的角色。 **commons-logging.jar** 是Apache Commons Logging库,它提供了一个统一的日志接口,允许...

Global site tag (gtag.js) - Google Analytics