最近一段日子可真是够忙的,项目上线终于开始有回报了!一直要维护项目的一些不合理问题以及客户的新需求,越发的觉得日志是如此的重要。而且又有在看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
分享到:
相关推荐
Commons-Digester 是一个 XML-Java对象的映射工具,用于解析 XML配置文件. Discovery Commons-Discovery 提供工具来定位资源 (包括类) ,通过使用各种模式来映射服务/引用名称和资源名称。. EL Commons-EL 提供在...
里面包含了pdfbox-1.8.2.jar fontbox-1.8.2.jar commons-logging-1.1.1.jar以及解析PDF的测试源码
java源码PDF版面管理器 该项目是添加内联样式、对齐文本、字体加载/缓存和其他改进的先驱。 LayoutManager1 可能仍会更新,以便通过复制类似类的 API 来简化用户过渡到 LayoutMgr2。 只有 LayoutMgr2 才支持重要的新...
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-...
弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,...
commons-logging jaxen 基本业务流程描述 通过XML文件定义抓取目标 通过DOM4J开源组件读取XML配置文件 根据配置文件执行抓取任务 对抓取到的内容根据定义进行解析与处理 目前缺陷功能描述 抓取...
里面包含了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...
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....
1. jpivot加入其它应用中 解压jpivot.war 文件,在你的应用当中你需要下面的这些文件: /wcf/** /jpivot/** /WEB-INF/wcf/** /WEB-INF/jpivot/** /WEB-INF/lib/** 最后你还需要对比 jpivot.war 里的 web.xml ...