Java日志系统(下)
在Java日志系统(上)中,简单介绍了当前日志系统的基本模式。
3. 开源日志系统
sun公司为了抗衡Log4j,在JDK1.4推出了一套日志系统JDK Logger,它的最大优点是不需要继承任何类库,只要有Jre环境,就可以直接使用。但是相比其他开源日志框架,JDK Logger在易用性、功能、扩展性方面都稍逊一筹,被人诟病,所以使用较少。下面具体介绍常见的开源日志系统。
3.1 Apache Commons Logging
Apache Commons Logging(简称Commons Logging,又名JCL,即Jakata Commons Loggings),兼容了当时的主流日志实现(log4j、JUL、simplelog),就连spring也依赖了JCL。传统的应用系统基本上使用Commons Logging和Apache Log4j的组合;后来,Log4j的作者Ceki认识到这套实现在一些细节上存在缺陷,于是又开发了Slf4j和Logback(这两个并不属于Apache组织),Slf4j用来取代Commons Logging,Logback则用来取代Log4j。
3.1.1 基本结构
在commons-logging-1.2.jar中,一共有2个包:
org.apache.commons.logging
org.apache.commons.logging.impl
前者包含了日志API,后者包含日志API的实现。
org.apache.commons.logging
- Interfaces
Log //日志对象接口,封装了操作日志的方法,定义了日志操作的5个级别:trace < debug < info < warn < error
- Classes
LogFactory //抽象类,用来获取日志对象的工厂类
LogSource
- Exceptions
LogConfigurationException
org.apache.commons.logging.impl
- Classes
AvalonLogger
Jdk13LumberjackLogger
Jdk14Logger
Log4JLogger //对Log4j的日志对象的封装
LogFactoryImpl //LogFactory的实现类,是真正获取日志对象的地方
LogKitLogger
NoOpLog
ServletContextCleaner
SimpleLog
WeakHashtable
3.1.2 使用方式
Commons Logging的使用非常简单。首先在pom.xml中添加如下依赖:
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
<dependency>
其次,