SLF4J,即Simple Logging Facade for Java,是一个通用的、Java日志系统的抽象框架。

对于实现了SLF4J的日志系统,能够在应用部署时(而不是编译时)动态插入应用,使得应用可以采用任何日志系统。

1. 常见的SLF4J日志系统实现

  • No-operation (NOP) Logger

即org.slf4j.helpers.NOPMDCAdapter,是SLF4J API自带的默认实现。该实现只是占位,不会输出任何日志。

  • Simple Logger

即org.slf4j.impl.SimpleLogger,是SLF4J API提供的简单日志实现。

  • Logback

原生实现了SLF4J API的日志系统,是SLF4J的标准参考实现,提供了强大而灵活的日志功能,是Log4j的继任者。

  • Log4j

通过封装实现了SLF4J API的日志系统。

  • JCL (Jakarta Commons Logging)

通过封装实现了SLF4J API的日志系统。

  • Java Logging(JUL, java.util.logging)

通过封装实现了SLF4J API的日志系统。

2. SLF4J的基本用法

1) 在Java应用类中调用SLF4J API输出日志

org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(MyClassName.class);
logger.info("my logs");

2) 配置mdc.xml,以指定日志格式等(可选)

<configuration><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><layout><Pattern>%-4r [%thread] %-5level C:%X{MDC.my_param1} N:%X{MDC.my_param2} - %msg%n</Pattern></layout></appender><root level="debug"><appender-ref ref="CONSOLE"/></root>
</configuration>

3. MDC (Mapped Diagnostic Context)

MDC顾名思义提供日志的上下文信息,通过MDC中的参数值区分输出的日志。

SLF4J的MDC实质上就是一个Map。通常实现SLF4J的日志系统支持MDC,即表明该日志系统负责维护这个Map。应用就可以依赖于日志系统,直接存取key/value对到该Map中。

在SLF4J API中,也提供了MDC的默认实现类org.slf4j.MDC。如果实现SLF4J API的日志系统也支持MDC功能,则覆盖org.slf4j.MDC类。

目前,只有Log4j和Logback支持MDC功能。Java Logging不支持MDC功能,可以通过SLF4J API中的org.slf4j.helpers.BasicMDCAdapter提供MDC功能。而对于其他的日志系统(如slf4j-simple, slf4j-nop),只能使用SLF4J API中的org.slf4j.helpers.NOPMDCAdapter提供MDC功能。

参考链接:

http://www.slf4j.org/
    https://github.com/qos-ch/slf4j
    http://www.slf4j.org/api/org/slf4j/MDC.html

SLF4J及其MDC详解相关推荐

  1. Log4j2的MDC详解

    概述 MDC介绍 MDC(Mapped Diagnostic Context,映射调试上下文)是 log4j 和 logback 提供的一种方便在多线程条件下记录日志的功能.某些应用程序采用多线程的方 ...

  2. SLF4J和Logback日志框架详解

    SLF4J和Logback日志框架详解 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 本文讲述SLF4J和Logback日志框架.    SLF4J是一 ...

  3. slf4j log4j logback关系详解和相关用法 【by Sinte-Beuve】

    slf4j log4j logback关系详解和相关用法 slf4j log4j logback的关系 The Simple Logging Facade for Java是什么? log4j和log ...

  4. SpringBoot——slf4j+logback日志处理及配置详解

    SpringBoot--sl4j+logback日志处理及配置详解 日志的级别 打印级别:ALL > TRACE > FATAL > DEBUG > INFO > WAR ...

  5. Slf4j之MDC机制

    什么是MDC机制 MDC(Mapped Diagnostic Contexts)映射诊断上下文,主要用在做日志链路跟踪时,动态配置用户自定义的一些信息,比如requestId.sessionId等等. ...

  6. JUC第六讲:ThreadLocal/InheritableThreadLocal详解/TTL-MDC日志上下文实践

    本文是JUC第六讲:ThreadLocal/InheritableThreadLocal详解.ThreadLocal无论在项目开发还是面试中都会经常碰到,本文就 ThreadLocal 的使用.主要方 ...

  7. spring boot 实战 / 可执行war启动参数详解

    概述   上一篇文章<spring boot 实战 / mvn spring-boot:run 参数详解>主要讲解了spring boot 项目基于maven插件启动过程中借助profil ...

  8. Lombok 使用详解,简化 Java 编程

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者 | 日拱一兵 来源 | 公众号(日拱一兵) 在 Java 应 ...

  9. 十二、springboot 详解RestControllerAdvice(ControllerAdvice)

    springboot 详解RestControllerAdvice(ControllerAdvice)拦截异常并统一处理 简介 @Target({ElementType.TYPE}) @Retenti ...

最新文章

  1. 正则表达式(overall)
  2. 计算机结构介绍,计算机系统结构介绍.pdf
  3. netlink的内核实现原理
  4. OSI(Open System Interconnect)开放式系统互联
  5. 【洛谷 P2731】骑马修栅栏【欧拉路与欧拉回路】
  6. delphixe android服务,delphi xe10 android服务gps [复制]
  7. 北理工嵩天Python面向对象程序设计笔记
  8. 如何用AE做出动画效果杭州UI设计分享方法
  9. linux命令行显卡驱动,Linux下NVIDIA显卡驱动安装方法
  10. 强网杯2022 crypto 复现
  11. 小程序携带参数跳转的方式wx.navigateTo的URL和通过data-传递
  12. 【Java系列】:异常-Exception
  13. 目标检测Tensorflow:Yolo v3代码详解 (2)
  14. elasticsearch安装采坑记录
  15. 阿里大数据ACP认证对找工作到底有用嘛?
  16. 罪恶黑名单第一季/全集The Blacklist迅雷下载
  17. 结缘OpenStack:运营商NFV部署加速 要开源也要保障
  18. C语言调用API的方法
  19. 用户登录程序C语言实现
  20. SQL计算某个字符的出现次数

热门文章

  1. 正则表达式(详细解析)
  2. 未来挣钱的行业有哪些,这3个项目有前景
  3. [网络应用]远景论坛今早上不去了{5:50测试}
  4. [病毒分析]熊猫烧香(下)核心函数部分分析
  5. SqlServer geometry 转 geography
  6. java学习之破壳hello world
  7. Python入门到放弃系列一
  8. 计算机企业想法描述范文,产生你的企业想法.doc
  9. jQuery网页版简易qq音乐
  10. TikTok 被盯上原来是扎克伯格背后搞的鬼?