vlambda博客
学习文章列表

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包下。


commons-logging,log4j,logback,slf4j之间的关系详解。


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的强悍和优秀!


commons-logging,log4j,logback,slf4j之间的关系详解。


总结


1、commons-loggin,slf4j只是一种日志抽象门面,不是具体的日志框架。

2、log4j,logback是具体的日志框架。

3、一般首选使用slf4j+logback,或者slf4j+log4j,commons-logging+log4j。