`

Commons Logging 源码解析一

阅读更多

  最近一段日子可真是够忙的,项目上线终于开始有回报了!一直要维护项目的一些不合理问题以及客户的新需求,越发的觉得日志是如此的重要。而且又有在看Commons的其它开源项目的源码,所以决定今天开始研究一下Commons Logging。以前一直没整理明白Logging与Log4j的区别,看了一些关于Commons Logging的官网说明以及一些同行们的总结,这才有所领悟。

  先说点理论些的东西,就说说这使用日志的重要性吧

  不知道各位有没有听过这样一句话:好程序不是写出来的,而是靠调试出来的!这句话的对错那也是仁者见仁、智者见智,不过这足以证明调试程序的重要性,而调试信息从何而来?!基本上诸如抛出异常、捕获异常或者还在用System.out.println打印?!程序调试完了,为了避免诸如System.out.println这类的垃圾代码,你除了删除再也没有别的办法!如果你不怕把大把的时间浪费在做这类无趣的事情上,你大可以不必使用日志框架。不过,等读完了这篇博文再决定要不要换个日志方式来调试程序吧!

  再来说说Commons Logging与其它日志组件的关系吧:

  从J2SE1.4开始,JDK就已经提供了Java日志 API。此外其它的日志组件还有我所知道的Log4j,LogKit等等。看我举的这些Logging 组件上为何不提Commons Logging API呢?!这是有原因的,Commons Logging到底扮演着怎么样的一个角色呢?!由来是这样的,现在有这么多的日志组件,多就意味着选择多,选择多就意味着我们要学的就多,学的多就意味着我们要了解不到组件框架的API就多!我到底要选择哪一种,各个组件之间又相互独立,如何做到各个日志的统一简化我们的开发难度,用不到的日志组件,那项目的移植性就麻烦了,Commons Logging就是Apache提供为兼顾各个不同Logging组件简化API差异而建立的一个抽象层组件。你只需要牺牲一点点的配置时间,从而达到同一项目使用不同日志组件的目的,真的没有比这个更好的了,可移植性强了,耶!

  Commons Logging组件的办法是将记录日志的功能封装为一组标准的API,使其底层实现可以任意修改和变换(就是那些org.apache.commons.logging.impl.*Logger)。开发者利用这个API来执行记 录日志信息的命令,由API来决定把这些命令传递给适当的底层实现。因此,对于开发者来说,Logging组件对于任何具体的底层实现都是平等的。

  Commons Logging如何做到对各个日志组件起到一个中间桥梁作用的呢,这就需要我们去解读他的源码了,不过需要说明的是,代码相当的少了!在读代码之前呢,我们需要对其有一个感性的认识,具体的Commons Logging使用方式大家可以通过如下链接去进行感性认识:Commons Logging的使用方法 ,我就不再重复了(大家可不要偷懒噢,一定要读完它,源码见附件,呵呵呵~)

   最后列出所有Commons Logging源代码结构:

   org.apache.commons.logging

         |__Log:一个抽象日志API的简单接口

                   |__org.apache.commons.logging.impl

                            |__AvalonLogger:包装avalon framework日志API的接口实现

                            |__Jdk13LumberjackLogger:JDK3日志实现

                            |__Jdk14Logger:包装JDK4日志API的接口实现类

                            |__Log4JLogger:Log4j日志API包装类

                            |__LogKitLogger:Avalon LogKit日志API包装实现类

                            |__NoOpLog:无日志信息输出实现类(Commons logging自带实现)

                            |__SimpleLog:commons logging自带日志实现类

         |__LogFactory:创建Log实现的工厂类

                  |__org.apache.commons.logging.impl

                            |__LogFactoryImpl

         |__LogConfigurationException

         |__LogSource

   org.apache.commons.logging.impl 

          |__ServletContextCleaner

          |__WeakHashtable

 

 

分享到:
评论

相关推荐

    apache-commons源码及jar文件

    Commons-Digester 是一个 XML-Java对象的映射工具,用于解析 XML配置文件. Discovery Commons-Discovery 提供工具来定位资源 (包括类) ,通过使用各种模式来映射服务/引用名称和资源名称。. EL Commons-EL 提供在...

    java解析PDF所需的基础jar包

    里面包含了pdfbox-1.8.2.jar fontbox-1.8.2.jar commons-logging-1.1.1.jar以及解析PDF的测试源码

    飞qjava源码-PdfLayoutManager:向PDFBox添加换行、分页、表格和样式

    java源码PDF版面管理器 该项目是添加内联样式、对齐文本、字体加载/缓存和其他改进的先驱。 LayoutManager1 可能仍会更新,以便通过复制类似类的 API 来简化用户过渡到 LayoutMgr2。 只有 LayoutMgr2 才支持重要的新...

    基于SpringMVC+Hibernate4的考勤管理系统+.zip

    jboss-logging-annotations-1.2.0.Beta1.jar jboss-transaction-api_1.2_spec-1.0.0.Final.jar jstl-1.2.jar mysql-connector-java-5.1.7-bin.jar poi-3.15.jar poi-examples-3.15.jar poi-excelant-3.15.jar poi-...

    spring_MVC源码

    弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,...

    百度贴吧签到网站源码Java-playfish:playfish基于JAVA技术的网页内容智能抓取

     commons-logging  jaxen 基本业务流程描述  通过XML文件定义抓取目标  通过DOM4J开源组件读取XML配置文件  根据配置文件执行抓取任务  对抓取到的内容根据定义进行解析与处理 目前缺陷功能描述  抓取...

    读取PDF的jar包

    里面包含了pdfbox-1.8.2.jar fontbox-1.8.2.jar commons-logging-1.1.1.jar以及解析PDF的测试源码 PDFBox 0.7.3。PDFBox是一个开源的对pdf文件进行操作的库。 PDFBox-0.7.3.jar加入classpath。同时FontBox1.0.jar...

    Maven权威指南 很精典的学习教程,比ANT更好用

    Creative Commons BY-ND-NC Foreword: Beta 0.16 Preface 1. How to Use this Book 2. Your Feedback 3. Font Conventions 4. Maven Writing Conventions 5. Acknowledgements 1. 介绍 Apache Maven 1.1....

    jpivot学习总结.doc

    1. jpivot加入其它应用中 解压jpivot.war 文件,在你的应用当中你需要下面的这些文件: /wcf/** /jpivot/** /WEB-INF/wcf/** /WEB-INF/jpivot/** /WEB-INF/lib/** 最后你还需要对比 jpivot.war 里的 web.xml ...

Global site tag (gtag.js) - Google Analytics