slf4j、log4j、logback三者之间的关系看下面这张图就比较清晰了:
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:在编译时静态绑定真正的日志库
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。