slf4j 简介

slf4j简介

SLF4J(Simple logging facade for Java)不是具体的日志解决方案,而是一个抽象层( abstraction layer),它允许你在后台使用任意一个日志类库。

按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。

实际上,SLF4J所提供的核心API是一些接口以及一个LoggerFactory的工厂类。

如果是在编写供内外部都可以使用的API或者通用类库,那么你真不会希望使用你类库的客户端必须使用你选择的日志类库。

如果你的一个项目中已经使用了log4j,而你现在加入了一个新的类库,比方说加入了 Apache Active MQ——而它依赖于另外一个日志类库logback,那么你就需要把它logback也加载进你的项目中去。

但如果Apache Active MQ使用了SLF4J,那么你可以继续使用你的日志类库log4j,而无需忍受要同时加载和维护log4j和logback这两日志框架的内伤。

总的来说,SLF4J使你的代码独立于任意一个特定的日志API,这是一个对于开发API的开发者很好的思想。虽然抽象日志类库的思想已经不是新鲜的事物而且Apache commons logging也已经在使用这种思想了,但现在SLF4J正迅速成为Java世界的日志标准。

简单来说:

SLF4J是为了解决一个项目要维护多个日志系统的问题。

绑定一个日志框架

正如上面所说的, SLF4J 支持各种日志框架。 SLF4J 发布了几个称为 SLF4J 绑定”SLF4J bindings”的jar包 , 它们每个分别绑定了日志的实现。

绑定包说明
slf4j-log4j12-1.7.24.jar绑定了log4j 1.2版
slf4j-jdk14-1.7.24.jar绑定了java.util.logging, 也就是JDK 1.4的日志系统。
slf4j-nop-1.7.24.jar没有绑定任何东东, 所有的日志都不输出。
slf4j-simple-1.7.24.jar绑定了一个最简单的实现, 所有的事件都是通过System.err进行输出,只打印输出INFO或以上级别的日志。
slf4j-jcl-1.7.24.jar绑定了Jakarta Commons Logging。
logback-classic-1.0.13.jar原生实现SLF4J,ch.qos.logback.classic.Logger 类直接实现了SLF4J的org.slf4j.Logger接口。slf4j的默认实现是logback。

.
这里写图片描述

1.slf4j+log4j

使用log4j做为底层日志工具,需要三个架包:

  1. slf4j-api-x.x.x.jar
  2. slf4j-log4j12-x.x.x.jar
  3. log4j-1.2.xx.jar

2.slf4j+logback

Logback和log4j是非常相似的。

Logback的内核重写了,在一些关键执行路径上性能提升10倍以上。而且logback不仅性能提升了,初始化内存加载也更小。

搭建logback需要3个架包:

  1. slf4j-api-1.6.x.jar
  2. logback-core-0.9.21.jar(目前已经有1.0.0)
  3. logback-classic-0.9.21.jar(目前已经有1.0.0)

3.log4j2

  1. log4j-core-xx.jar
  2. log4j-api-xx.jar

我们知道,要在某个类中使用log4j记录日志,只需要申明下面的成员变量(其实不一定要是成员变量,只是为了方便调用而已),log4j 2.0的使用非常简单,只要用LogManager的getLogger函数获取一个logger,就可以使用logger记录日志。

private static Logger logger = LogManager.getLogger(MyApp.class.getName());

Maven 引入日志框架

logback

使用logback实现日志系统

将会自动依赖:

  1. slf4j-api-1.7.22.jar
  2. logback-core-1.2.1.jar
  3. logback-classic-1.2.1.jar
<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <version>1.2.1</version>
</dependency>

log4j

使用log4j实现日志系统

将会自动依赖:

  1. slf4j-api-1.7.24.jar
  2. slf4j-log4j12-1.7.24.jar
  3. log4j-1.2.17.jar
<!-- log4j -->
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>1.7.24</version>
</dependency>

java.util.logging

使用java.util.logging实现日志系统

将会自动依赖:

  1. slf4j-api-1.7.24.jar
  2. slf4j-jdk14-1.7.24.jar
<!-- java.util.logging -->
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-jdk14</artifactId>
  <version>1.7.24</version>
</dependency>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值