1

slf4j、log4j、logback三者之间的关系看下面这张图就比较清晰了:
日志关系图.jpg
slf4j(Simple Logging Facade For Java)是接口,而log4j与logback是实现。
log4j与logback各自依赖的jar包在这篇文章里有提到
logj4依赖(版本根据自己项目来定,这是我项目里的):

<dependency> 
    <groupId>log4j</groupId> 
    <artifactId>log4j</artifactId> 
    <version>1.2.17</version> 
</dependency>
<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-log4j12</artifactId> 
    <scope>test</scope> 
</dependency>

logback依赖:

<dependency> 
    <groupId>ch.qos.logback</groupId> 
    <artifactId>logback-classic</artifactId> 
    <version>1.2.3</version> 
</dependency>

另外,log4j2是log4j的升级版本,其优点可以看这里,文章里有提到异步输出、低延迟、同步与异步混合使用的特点。

日志体系
文档:日志类库详解
摘录一些内容:
日志系统有java.util.logging(jul)/log4j/logback/log4j2
jul:性能相对较低;功能也相对少
log4j:高度可配置;根据优先级别进行记录;记录到不同存储介质。短板在于性能。
logback:性能较log4j有提升,有异步,filter特性。
log4j2:模仿了 SLF4J/Logback,性能最优,也做了 Facade/Implementation 分离的设计

logback与log4j2都支持filter,都支持对配置文件的动态更新

日志门面
common-logging:在运行时动态的绑定日志实现组件来工作
slf4j:在编译时静态绑定真正的日志库


步履不停
38 声望13 粉丝

好走的都是下坡路