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

slf4j 日志框架的使用方法

文章目录

    • 一、环境配置
      • 1.1 SpringBoot 项目
      • 1.2 非SpringBoot 项目
    • 二、slf4j 的使用方法
      • 2.1 创建日志记录器
      • 2.2 输出日志
    • 三、slf4j 的快速使用
      • 3.1 @Slf4j 的使用方法

一、环境配置

1.1 SpringBoot 项目

Spring Boot 项目默认使用 slf4j + logback。

我们不需要额外导入依赖。

1.2 非SpringBoot 项目

在 pom.xml 文件里面导入以下依赖

<!--slf4j core 使用slf4j必須添加-->  
<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.27</version></dependency><!--slf4j 自带的简单日志实现 --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-simple</artifactId><version>1.7.27</version></dependency>

二、slf4j 的使用方法

使用 org.slf4j.Loggerorg.slf4j.LoggerFactory 手动创建日志记录器实例。

2.1 创建日志记录器

日志记录器(Logger)是用于生成日志消息的组件。它负责在应用程序中记录事件和状态信息,通常用于调试、监控和错误追踪。日志记录器可以通过不同的级别(如 DEBUG、INFO、WARN、ERROR)来输出日志信息,帮助开发者和运维人员分析程序的运行情况。

在Java的日志框架(如Log4j、SLF4J等)中,Logger通常与类或包进行关联,也具备层次结构。每个类或包都有一个对应的Logger实例,这样就可以按照类或包来分类和控制日志输出级别。例如:

private static final Logger logger = LoggerFactory.getLogger(MyClass.class);

MyClass.class 传给 getLogger() 方法是为这个类创建或获取一个专属的Logger对象。这样,在后续的日志记录操作中,可以根据这个类的身份标识精确地输出日志,有利于开发人员追踪和定位问题,同时也能实现灵活的日志管理策略。

2.2 输出日志

手动创建日志记录器实例,然后通过该实例进行日志记录。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class MyClass {// 创建日志记录器实例private static final Logger logger = LoggerFactory.getLogger(MyClass.class);public void myMethod() {// 使用日志记录器记录日志logger.debug("Debug message");logger.info("Info message");logger.error("Error message");}
}

注意:日志框架一般默认输出 INFO 级别以上的日志,低级别的日志输出需要设置相应的配置。

三、slf4j 的快速使用

Lombok 提供的注解 lombok.extern.slf4j.Slf4j可以用来自动生成 SLF4J 日志记录器,简化了日志记录器的创建过程。

3.1 @Slf4j 的使用方法

使用这种方式,你无需手动创建日志记录器实例,Lombok 会在编译时自动生成日志记录器实例,你只需在需要记录日志的地方使用 log 对象即可进行日志记录。

import lombok.extern.slf4j.Slf4j;@Slf4j
public class MyClass {public void myMethod() {// 使用 Lombok 自动生成的日志记录器实例记录日志log.debug("Debug message");log.info("Info message");log.error("Error message");}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 理想发周榜,不是新能源市场的原罪
  • Blackcat V2.2付费会员制WordPress资源站主题
  • Python应用—利用opencv实现图像匹配
  • 【杂谈】在大学如何学得计算机知识,浅谈大一经验总结
  • VMware Workstation 17 图文安装教程
  • 【Qt】QDateTimeEdit
  • 一刷代码随想录(贪心5)
  • ChatGPT:GPT,GPT2,GPT3,Prompt
  • 请转告HPC计算AI计算单位,选对存储事半功倍
  • 元气森林|每天拆解一个品牌营销方案
  • 根据《广东省政务服务数字化条例》规定,政务服务数字化,是指将___广泛应用于政务服务,推动政务服务更加智能、便捷、高效的活动。()
  • JavaScript (十)——JavaScript 比较 和 逻辑运算符
  • 河南萌新联赛2024第(三)场:河南大学
  • C语言程序设计23
  • 【MySQL】用户管理连接池原理{数据库权限/连接池/mysql访问逻辑}
  • @angular/forms 源码解析之双向绑定
  • [译]前端离线指南(上)
  • 07.Android之多媒体问题
  • Apache Spark Streaming 使用实例
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • gitlab-ci配置详解(一)
  • happypack两次报错的问题
  • JAVA_NIO系列——Channel和Buffer详解
  • Nacos系列:Nacos的Java SDK使用
  • QQ浏览器x5内核的兼容性问题
  • RxJS: 简单入门
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 基于 Babel 的 npm 包最小化设置
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 解析 Webpack中import、require、按需加载的执行过程
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 前端学习笔记之观察者模式
  • 实习面试笔记
  • 使用Gradle第一次构建Java程序
  • 我是如何设计 Upload 上传组件的
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 优秀架构师必须掌握的架构思维
  • 《码出高效》学习笔记与书中错误记录
  • ​14:00面试,14:06就出来了,问的问题有点变态。。。
  • ​数据结构之初始二叉树(3)
  • #565. 查找之大编号
  • #Ubuntu(修改root信息)
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (2024)docker-compose实战 (9)部署多项目环境(LAMP+react+vue+redis+mysql+nginx)
  • (BAT向)Java岗常问高频面试汇总:MyBatis 微服务 Spring 分布式 MySQL等(1)
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (ZT)一个美国文科博士的YardLife
  • (二) 初入MySQL 【数据库管理】
  • (二)windows配置JDK环境
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (离散数学)逻辑连接词
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联