commons-logging,log4j,logback,slf4j之间的关系详解。
commons-logging
是apache最早提供的日志的门面接口。它的主要作用是提供一个日志门面,使用者可以使用不同的日志实现。用户可以自由选择第三方的日志组件作为具体实现,像log4j,或者jdk自带的logging, common-logging会通过动态查找的机制,在程序运行时自动找出真正使用的日志库。common-logging内部有一个Simple logger的简单实现,但是功能很弱。
官网:https://commons.apache.org/proper/commons-logging/
slf4j
全称:Simple Logging Facade for Java
官网:https://www.slf4j.org/
The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks (e.g. java.util.logging, logback, log4j) allowing the end user to plug in the desired logging framework at deployment time.
从官网的描述看,slf4j只是一种日志的门面和日志抽象框架,而java.util.logging,log4j,logback都是slf4j抽象框架的具体实现,只要调用slf4j的API就可以集成任何的实现框架在一起。
logging
Java内部自带的日志工具,java.util包下。
log4j
Apache下的一个开源日志框架,也是目前应用最广的一个日志框架。
官网:https://logging.apache.org/log4j/2.x/
logback
logback是slf4j的原生实现框架,同样是log4j同一个人之手,但拥有比log4j更多的优点和更多的特性,用来代替log4j。
官网:https://logback.qos.ch/
为什么要选择logback作为目前的日志框架可参考下面链接
英文:https://logback.qos.ch/reasonsToSwitch.html
中文:http://www.oschina.net/translate/reasons-to-prefer-logbak-over-log4j
更快的执行速度
基于我们先前在log4j上的工作,logback 重写了内部的实现,在某些特定的场景上面,甚至可以比之前的速度快上10倍。在保证logback的组件更加快速的同时,同时所需的内存更加少。
为什么要推荐logback作为首推的日志框架,仅看上面这一点,就觉得logback的强悍和优秀!
总结
1、commons-loggin,slf4j只是一种日志抽象门面,不是具体的日志框架。
2、log4j,logback是具体的日志框架。
3、一般首选使用slf4j+logback,或者slf4j+log4j,commons-logging+log4j。