slf4j 与log4j & logback的区别以及使用场景


slf4j 与log4j & logback的区别以及使用场景


1.1 slf4j

1.1.1 slf4j概念

SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志System.

实际上,SLF4J所提供的核心API是一些接口以及一个LoggerFactory的工厂类。从某种程度上,SLF4J有点类似JDBC,不过比JDBC更简单,在JDBC中,你需要指定驱动程序,而在使用SLF4J的时候,不需要在代码中或配置文件中指定你打算使用那个具体的日志系统。如同使用JDBC基本不用考虑具体数据库一样,SLF4J提供了统一的记录日志的接口,只要按照其提供的方法记录即可,最终日志的格式、记录级别、输出方式等通过具体日志系统的配置来实现,因此可以在应用中灵活切换日志系统。

1.1.2 使用场景

如果你开发的是公共使用的JAR包、类库、公共组件,那么就应该考虑采用SLF4J,因为不可能影响最终用户选择哪种日志系统。在另一方面,如果是一个简单或者独立的应用,确定只有一种日志系统,那么就没有使用SLF4J的必要。假设你打算将你使用log4j的产品卖给要求使用logback的用户时,面对成千上万的log4j调用的修改,相信这绝对不是一件轻松的事情。但是如果开始便使用SLF4J,那么这种转换将是非常轻松的事情。

1.2 log4j 与 logback对比

log4j和logback就是两个受欢迎的日志框架。但两者又有不同。 log4j是apache实现的一个开源日志组件。

logback同样是由log4j的作者设计完成的,拥有更好的特性,用来取代log4j的一个日志框架。是slf4j的原生实现。

无论从设计上还是实现上,Logback相对log4j而言有了相对多的改进。但是两者的用法几乎差别不大。下面是logback的优势:

1.更快的执行速度

2.充分的测试

3.logback-classic 非常自然的实现了SLF4J

4.丰富的扩展文档

5.可以使用使用XML配置文件或者Groovy

6.自动重新载入配置文件

7.优雅地从I/O错误中恢复

8.自动清除旧的日志归档文件

9.自动压缩归档日志文件


分享到:


相關文章: