当前位置: 首页 > news >正文

【日常记录-Java】SLF4J扫描实现框架的过程

1. 简介

        SLF4J(Simple Logging Facade for Java)作为一种简单的门面或抽象,服务于其他各种日志框架,例如JUL、log4j、logback等,核心作用有两项:

  • 提供日志接口;
  • 提供获取具体日志对象的方法;

2. 扫描过程

  2.1 引入依赖

        在使用SLF4J时,需要引入其API依赖以及一个具体日志实现框架的依赖,如logback、log4j;

  2.2 服务加载

        从2.0.0版本开始,SLF4J通过Java的SPI(Service Provider Interface)技术来加载当前classpath下配置的SLF4JServiceProvider;在SPI包下,SLF4J定义了一个接口SLF4JServiceProvider,具体的日志实现框架会提供一个实现类,并配置在META-INF/services/org.slf4j.spi.SLF4JServiceProvider文件中;

  2.3 初始化过程

        当调用LoggerFactory的getLogger方法时,SLF4J会尝试加载并初始化一个SLF4JServiceProvider;

        若在classpath下找到了配置的SLF4JServiceProvider实现类,则使用该实现进行初始化;若未找的,则使用默认的NOPServiceProvider,该provider提供的logger不会输出任何东西;

  2.4 获取日志对象

        通过初始化后的SLF4JServiceProvider,可以获取到一个ILoggerFactory接口的实现,在通过该实现获取具体的Logger对象;

  2.5 日志记录

        使用获取到的Logger对象,可以调用其提供的日志记录方法(如info、error等)进行日志记录;这些日志记录方法会调用具体的日志实现框架来进行日志输出;

3. SLF4J的优势与特点

  • 解耦:通过引入SLF4J作为日志门面,可以将日志记录与具体的日志实现框架解耦,使得在更换日志实现框架时无需修改大量的代码;
  • 统一接口:SLF4J提供了统一的日志接口,使得开发者可以更加方便地进行日志记录;

4. 注意事项

  • 避免多个实现框架共存:同一个项目中,应避免同时引入多个SLF4J的实现框架,否则可能会导致冲突和不确定的行为;
  • 正确配置:应确保SLF4J的SPI配置文件(如META-INF/services/org.slf4j.spi.SLF4JServiceProvider)正确配置,以便SLF4J能够正确加载和初始化所需的日志实现框架;
http://www.lryc.cn/news/472395.html

相关文章:

  • uni-app 获取 android 手机 IMEI码
  • 后台管理系统的通用权限解决方案(八)认证机制介绍、JWT介绍与jjwt框架的使用
  • 接口测试 —— Postman 变量了解一下!
  • 鸿蒙系统:核心特性、发展历程与面临的机遇与挑战
  • 从0到1,用Rust轻松制作电子书
  • 半天入门!锂电池剩余寿命预测(Python)
  • 学生党头戴式耳机哪款音质更胜一筹?TOP4好音质头戴式耳机推荐
  • 数据结构 ——— 二叉树的概念及结构
  • 【React】React 的核心设计思想
  • C++ 二叉树进阶:相关习题解析
  • Matlab实现蚁群算法求解旅行商优化问题(TSP)(理论+例子+程序)
  • 2024年10月HarmonyOS应用开发者基础认证全新题库
  • kafka 分布式(不是单机)的情况下,如何保证消息的顺序消费?
  • 数据分析案例-苹果品质数据可视化分析+建模预测
  • 沈阳乐晟睿浩科技有限公司抖音小店运营创新
  • 【前端】CSS知识梳理
  • 【undefined reference to xxx】zookeeper库编译和安装 / sylar项目ubuntu20系统编译
  • IDEA解决 properties 文件乱码问题
  • 超越Jira?2024年探索项目管理新工具!
  • 大模型,多模态大模型面试问题【计算图,LLama,交叉熵,SiLU,RLHF】
  • 凌雄科技打造DaaS模式,IT设备产业链由内而外嬗变升级
  • Oracle视频基础1.2.1练习
  • 15、基于AT89C52的数码电子时钟proteus仿真设计
  • UML总结
  • 网站被浏览器提示不安全怎么办?——附解决方案
  • “前端兼容——CSS篇”(进阶版)
  • 使用Docker Compose简化微服务部署
  • 2025考研各省市网上确认时间汇总!
  • SSL/TLS 密码套件漏洞分析以及修复方法
  • [Vue warn]: Do not use built-in or reserved HTML elements as component id: