认识和使用Slf4j

SLF4J(The Simple Logging Facade for Java )是一个简单的日志门面,SLF4J提供了统一的日志api让你可以在部署应用的时候随意更换日志框架。使用时只需要依赖slfj-api-xxx即可。

如:

<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-api</artifactId>
</dependency>

hello world例子程序

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class HelloWorld {
  public static void main(String[] args) {
    Logger logger = LoggerFactory.getLogger(HelloWorld.class);
    logger.info("Hello World");
  }
}

运行例子程序你会发现控制台会输出:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

这是因为你没有绑定实际的日志框架,以下使用logback为日志框架为例,logback原生实现slf4j的接口,所以没有适配或者转换层,性能会更好,在pom中添加logback日志框架的依赖:

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

再次运行正常打印日志。

slf4j在2.0.0版本之后推出了fluent api,使用该api打印日志将会向后兼容slf4j的版本,有兴趣的朋友可以自行了解,这里不展开。

在部署时绑定日志框架

slf4j支持多个日志框架,每个日志都有一个桥接jar包,称之为"SLF4J bindings",部署是只需要更换桥接包和对应的日志框架包即可实现日志框架的切换。以下是桥接包的列表:

jar包对应的绑定的日志框架备注
slf4j-log4j12-1.7.36.jarlog4j有安全问题,建议使用reload4j代替,
slf4j-reload4j-1.7.36.jarreload4jlog4j原作者开发的在log4j项目上fork出来并修复安全问题的新日志项目,从log4j更换到reload4j不需要更改源代码
slf4j-jdk14-1.7.36.jarJDK 1.4 loggingjdk自带的日志类
slf4j-nop-1.7.36.jarslf4j的NOPLogger类slf4j实现的日志类,不打印任何日志
slf4j-simple-1.7.36.jarorg.slf4j.impl的SimpleLogger类slf4j实现简单的日志类,将所有日志输出到Systrem.err中
slf4j-jcl-1.7.36.jarJakarta Commons Logging
logback-classic-1.2.10.jar(requires logback-core-1.2.10.jar)logback原生实现slf4j接口,性能比其他的好

以下这张图描述了slf4j和其他日志框架的关系。
请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值