org.apache.log4j与org.apache.commons.logging这两个包有什么区别

apache common logging是一种log的框架接口,它自己并不实现log记录的功能,而是在运行时动态查找目前存在的日志库,调用相关的日志函数,从而隐藏具体的日志实现
log4j是具体的日志实现,真正负责"写"日志的这个功能

common logging自己不是log,你能够把它看作是一个日志的接口
而log4j就是日志的实现

使用common logging方式实现日志,主要的缘由在于能够忽略底层的日志实现,或者说为之后的日志实现库的更换提供透明界面
你能够考虑下,假设从log4j更换为logback,势必要重写全部本来使用log4j的源代码,而使用common logging的状况下,只须要更换jar包,而不须要对源代码作任何改动apache

 

作日志的时候通常是二者一块儿用,commons-logging工做原理作接口,log4j作实现,应用起来比单独的使用log4j要简单

commons-logging工做原理:
1. 首先在classpath下寻找本身的配置文件commons-logging.properties,若是找到,则使用其中定义的Log实现类
2. 若是找不到commons-logging.properties文件,则在查找是否已定义系统环境变量org.apache.commons.logging.Log,找到则使用其定义的Log实现类
3. 查看classpath中是否有Log4j的包,若是发现,则自动使用Log4j做为日志实现类
4. 使用JDK自身的日志实现类(JDK1.4之后才有日志实现类)
5. 使用commons-logging本身提供的一个简单的日志实现类SimpleLog
(以上顺序不保证彻底准确,请参考官方文档)
commons-logging老是能找到一个日志实现类,而且尽量找到一个"最合适"的日志实现类. 框架

相关文章
相关标签/搜索