Spring Boot日志:从Logger到@Slf4j的探秘

这篇具有很好参考价值的文章主要介绍了Spring Boot日志:从Logger到@Slf4j的探秘。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面

Hello大家好,今日是2024年的第一天,祝大家元旦快乐🎉 2024第一篇文章从SpringBoot日志开始

Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志

Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志

一、前言

在我们日常的公司开发中,难免都会存在着大大小小的BUG,不可能会有公司说我们的项目做出来是没有BUG的,那既然或多或少会BUG的话,要如何去发现BUG呢?

  • 那对于我们程序员来说,首先会想到的就是DeBug调试,有关IDEA的一些调试技巧,读者可以看看和这个视频 链接
  • 但是除了调试之外,其实我们还有其他的方法,既然我们在学习SpringBoot的话,那就要知道它里面其实有个东西叫做 日志文件,对于【日志】来说相信对大部分的开发者来说也是不陌生的,因为我们日常的开发中如果遇到一些问题的话,其实第一时间就会去查找日志,因为有些错误仅仅通过调试是排查不出来的,甚至是专业的排查工具也做不到,但是【日志】却记录了很多程序运行过程中的种种细节

💬 接下去就让我们来看看日志到底是个什么东西?

二、日志有什么用?

  1. 记录错误日志和警告日志(发现和定位问题):

    • 在交了钱之后却没有这位同学的记录了,后期只能靠错误日志去排查
  2. 记录用户的登录日志:

    • 通过记录同学们的登录时间,教务系统更新的时间
    • 如果发现有恶意的用户,就将其IP加入到黑名单中
  3. 记录系统的操作日志:

    • 比方说在教务系统不小心将一个同学的班级转错了,那就需要操作日志来进行数据恢复
    • 还可以通过这个操作日志才定位到操作人,是谁误操作了,防止推卸责任
  4. 程序执行日志:

三、日志怎么用?

Spring Boot 项⽬在启动的时候默认就有⽇志输出,如下图所示:

Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志

💬 那有同学就会说,既然都有日志了,为什么还要再去学习呢?

此时我便提出了以下几个问题

  1. 既然SpringBoot已经内置了日志,那就要去明白它内置的日志究竟是什么?
  2. 默认情况下,输出的⽇志并⾮是开发者定义和打印的,那开发者怎么在程序中⾃定义打印⽇志呢?
  3. ⽇志默认是打印在控制台上的,⽽控制台的⽇志是不能被保存的,那么怎么把⽇志永久的保存下来呢?
  4. 既然它已经内置了日志框架了,那这个框架应该怎么用?

下⾯我们⼀起来找寻这些问题的答案🔍

四、自定义日志打印

有的同学认为我们日常在写代码时使用 System.out.println()输出的内容就是日志,那我们可以用这个方法来打印看看

@RequestMapping("/sayhi")
public String sayHi(){
    System.out.println("打印日志");
    return "hello world ->" + myconfig;
}
  • 可以看到,只是在这个方法调用之后打印了对应的语句,但是这却不是我们想要看到的相关程序信息

Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志

💬 那么接下来我来介绍如何通过得到日志对象来打印日志

💬 常见日志框架说明

在这之前呢,我们要先来聊聊前面所提到的【日志框架】,首先你要知道的一点是:SpringBoot是内置了日志框架的

  • 我们可以来讲讲用户获取日志的调用流程:
    1. 用户在去写日志的时候不是直接具体去操作某个框架的,而是会先来到一个 日志门面 叫做Slf4j
    2. 然后Slf4j再根据系统的配置决定要调用的具体框架是什么

👉这个Slf4j呢就类似于 房产中介🏠,我们在买房的时候不可能一家家地去找,而是通过房产中介来进行对接以此可以看到不同的户型

Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志

  • 我们在最早的时候使用这个log4j 1 是比较多的,后面就慢慢升级成log4j 2

⚠ 注意:在去年log4j 被报出了漏洞,而且漏洞很严重,它可以通过这个漏洞直接把你的应用服务给关掉。那这个其实对许多公司来说是很大的一个问题,这里的话就不细讲了,有兴趣的同学可以去了解一下 链接

  • 所以到后面我们都换成了logback这个日志框架了,它就有人维护比较稳定一些,不过它的写法就不太一样了,类名、方法名都不一样了,所以我们直接去对接这个框架的话成本是非常高的,但如果此时我们有了Slf4j这个门面就不一样了💡
  • 就和我们之前在讲解 JDBC连接数据库 的时候一样,为什么要有JDBC呢?就是因为不同的数据库有不同的驱动,如果当一个项目突然要换数据库的话(MySQL —> Oracle),就会很麻烦了。所以我们才有了JDBC这个东西,程序员直接去操作JDBC就可以了,它就是一套规范,就是一个【门面】,程序员们通过JDBC去适配不同的数据库,就可以做到很好地解耦

💬 我们也可以去验证一下SpringBoot是否真的内置了这两个框架,那可以观察到确实是有的

Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志

4.1 在程序中得到⽇志对象【Logger】

在大致了解了SpringBoot中内置的框架后,我们就可以去试试看要如何获取到当前程序的日志

不过对于个日志对象的定义可以非常有讲究的

  1. 首先要明白我们这个日志对象是:
    • 方法级别(只能在某一个方法中去使用)
    • 类级别(可以在整个类的任何地方都能使用)

👉 那可以很清楚地知道,我们和这个日志对象一定是类级别的,因为要在整个类的任何方法都能获取到

  1. 那还要看的是这个日志对象是共有的还是私有的,那可以很明确,每个类都有自己的日志对象,所以它肯定是私有的,所以要用private来进行修饰
  2. 并且这个还得是 静态的,让其可以在方法中直接调用,那么就要用static来进行修饰
  3. 还有一点:你期望这个日志对象在某个方法中被修改吗?当然不想!所以我们还要再加上final关键字作为修饰

那么再加上一步步的修饰后,我们就要通过Slf4j所提供的接口去新建出一个日志对象了,注意在这里我们要选择org.slf4j这个包下的,不要导⼊错包!

Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志

  • 那我们知道,对于一个接口来说是我们在获取⽇志对象还需要使⽤⽇志⼯⼚ LoggerFactory,然后使用到里面的getLogger这个方法,这里一共有两种重写方法,我们先选择Class<?> clazz
    Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志

以下是它的源码,我们后面通过查看打印出来日志的形式来进行观察:

public static Logger getLogger(Class<?> clazz) {
    Logger logger = getLogger(clazz.getName());
    if (DETECT_LOGGER_NAME_MISMATCH) {
        Class<?> autoComputedCallingClass = Util.getCallingClass();
        if (autoComputedCallingClass != null && nonMatchingClasses(clazz, autoComputedCallingClass)) {
            Util.report(String.format("Detected logger name mismatch. Given name: \"%s\"; computed name: \"%s\".", logger.getName(), autoComputedCallingClass.getName()));
            Util.report("See https://www.slf4j.org/codes.html#loggerNameMismatch for an explanation");
        }
    }

    return logger;
}

4.2 使⽤⽇志对象打印⽇志

  • 接下去我们就将这个日志对象给打印出来吧
// 打印日志
logger.trace("test2 trace");
logger.debug("test2 debug");
logger.info("test2 info");
logger.warn("test2 warn");
logger.error("test2 error");
  • 通过运行并访问路由,我们可以发现当前程序的日志信息被打印出来了,但是呢却不是从trace开始打印的,而是从info开始打印的,这个的话就要追溯到 日志等级的优先级默认级别 了,这个我们在下一模块会展开详细讲解

Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志

4.3 ⽇志格式解读

看到了打印出来的日志信息后,相信有很多读者并不是很了解每一条日志信息到底想告诉我们什么,现在就让我们来分析一下这些日志信息吧

Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志

  • 这里我们主要来关注两块地方:
    1. 第一个是这边的包名,你是否觉得c.e.controller这个名称有点熟悉呢?没错,它就是我们在这个包下创建类的时候自动导入的包名,前面两个ce即为缩写
    package com.example.demo.controller;
    
    1. 第二块的话就是后面的类名Test2Controller了,这个的话就要去回忆我们上面为 工厂类LoggerFactory 中的getLogger这个方法所传入的当前类类名,所以SpringBoot靠着这些很好地识别到并打印出了相应的日志信息

还记得我们在上面所谈到的getLogger这个方法的第二种形式吗,我们一起再来看看

  • 此时我们再创建一个类,然后采取不同的getLogger方法

Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志

  • 以下是具体的测试代码
@RestController // = @Controller + @ResponseBody
public class StudentController {
    private static final Logger logger = LoggerFactory.getLogger("StudentController");

    @RequestMapping("/stu/sayhi")
    public String sayhi(){
        logger.info("student info");
        logger.error("student error");
        return "student sayhi";
    }
}
  • 然后我们来观察一下结果并与之前的方法进行一个对比就可以发现所打印出来的日志信息有着很大的不同,对于传入name来说所并不会展现出完整的包名路径,而是只有一个类名,所以想看到怎么样的日志信息读者可以自己来进行控制

Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志
以下是它的源码,供阅读参考

public static Logger getLogger(String name) {
    ILoggerFactory iLoggerFactory = getILoggerFactory();
    return iLoggerFactory.getLogger(name);
}

五、日志级别

整体地介绍完日志消息后,我们再来详细地介绍一下其中的一个东西叫做【日志级别】

5.1 日志级别的作用

  • ⽇志级别可以帮你筛选出重要的信息,⽐如设置⽇志级别为 error,那么就可以只看程序的报错⽇志了,对于普通的调试⽇志和业务⽇志就可以忽略了,从⽽节省开发者信息筛选的时间。
  • ⽇志级别可以控制不同环境下,⼀个程序是否需要打印⽇志,如【开发环境】我们需要很详细的信息,⽽【⽣产环境】为了保证性能和安全性就会输⼊尽量少的⽇志,⽽通过⽇志的级别就可以实现此需求。

5.3 日志级别分类和使用

  • trace:微量,少许的意思,级别最低;

  • debug:需要调试时候的关键信息打印;

  • info:普通的打印信息(默认⽇志级别);

  • warn:警告,不影响使⽤,但需要注意的问题;

  • error:错误信息,级别较⾼的错误⽇志信息;

  • fatal:致命的,因为代码异常导致程序退出执⾏的事件。

⽇志级别的顺序:

Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志

💬 级别越高所能接收到的消息就越少了,比如说error只能接收到errorfatal级别的日志

清楚各个日志级别后,我们就来配置文件中实际地来操作一下吧💻

  • ⽇志级别配置只需要在配置⽂件中设置“logging.level”配置项即可,如下所示:
# 日志级别设置
logging:
  level:
    root: error
  • 然后我们通过去访问不同的路由地址就可以看到,即使我们选择打印不同的日志级别,但是打印出来的内容只有error

Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志

  • 我们还可以做进一步更加严格的设置,只打印我们当前项目中controller层中的所触发的日志信息
# 日志级别设置
logging:
  level:
    root: error
    com:
      example:
        demo:
          controller: trace

先把项目重启一下我们可以看到,任何多余的日志都没有看到,就等待我们去访问
Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志
接着去访问一下就可以看到打印出来了相关的日志信息,而且很干净,并没有任何杂志

Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志
💬 所以在学习了日志级别后我们就可以清除掉配置⽂件中的原先⽇志设置,从而随心地去控制日志的打印内容

六、日志持久化【将日志保存下来】

以上的⽇志都是直接输出在控制台上的,然⽽在⽣产环境上咱们需要将⽇志保存下来,以便出现问题之后追溯问题,把⽇志保存下来的过程就叫做【持久化】

想要将⽇志进⾏持久化,只需要在配置⽂件中 指定⽇志的存储⽬录 或者是 指定⽇志保存⽂件名 之后,Spring Boot 就会将控制台的⽇志写到相应的⽬录或⽂件下了

6.1 设置日志的保存路径

  • 首先我们来看看如何设置日志的保存路径,这里在对于路径的设置要注意以下两点:
    1. 尽量不要将保存的路径写在系统盘
    2. 路径中不要出现中文和空格
  • 比方说我现在将日志文件的输出路径放到了D盘下的home文件夹下
# 日志保存路径
logging:
  file:
    path: D:\\home
  • 然后我们将项目重启并访问相关路由就可以看到,名为spring.log的文件就出现了,点进去一看确实出现了我们上面在控制台中所出现的日志信息

Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志

我们来看看几位同学的问题(・∀・(・∀・(・∀・*)

💬 那有同学就说,那在项目重启之后会不会丢失呢?

  • 答案是:不会的。日志文件一旦产生,那么日志文件及其内容就会永久得保存,不会出现文件或内容的丢失,无论任何操作都会保持以上的特性

💬 那在重启项目后再去运行,存储的日志会不会将之前的日志覆盖掉呢?

  • 答案是:不会的。对于日志的记录是一个append追加的过程,而不会产生一个覆盖的现象

我们可以将项目重启后再来访问一下看看,便可以观察到上一次的日志信息确实还存留,并且追加上了这一次的日志信息📰
Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志
💬 如果一直像上面那样追加,如果文件变得越来越大怎么办呢?

  • 这个不需要担心,有最大文件大小限制,如果超过了的话就会重新去创建一个,可以看 Spring的官方文档

Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志

6.2 配置⽇志⽂件的⽂件名

那么除了可以设置日志的保存路径外呢,我们还可以去配置⽇志⽂件的⽂件名,可以不用系统默认的,自己也可以起名哦~

  • 比方说我在这里将名字取为springboot.log,不过要记得取名字的同时也要带上路径哦,否则就就无法输出到指定的路径了,就会直接保存在当前项目中
# 日志保存名称
logging:
  file:
    name: D:\\home\\springboot.log

来运行一下看看,确实可以看到出现了一个名为springboot.log的文件

Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志
💬 那这个时候又有同学问了:什么东西都存在文件里,万一系统被入侵了文件不是很容易丢失吗?

  • 这个问题问得很好👍 在公司中做大项目的时候,我们并不是所有的日志信息都放在文件中,对于有些文件我们则是选择存放在【数据库】 中

对于生产级别日志分类 —— 根据业务场景来定

  1. 程序运行日志(存放在文件中)
    • 属于边缘性的东西,简单看一下
  2. 业务日志(存放到数据库中)
    • 记录系统关键操作的关键人,以及其修改前后的操作

📚 【综合练习】:将 controller 包下 error 级别以上的⽇志保存到 log_all.log 下,将 service 下warn 级别以上的⽇志保存到 log_all.log 下

七、更简单的⽇志输出 — lombok

每次都使⽤ LoggerFactory.getLogger(xxx.class) 很繁琐,且每个类都添加⼀遍,也很麻烦,这⾥讲⼀种更好⽤的⽇志输出⽅式,使⽤ lombok 来更简单的输出。

7.1 添加 lombok 依赖

  • 首先我们要在IDEA中去安装一个插件,叫做EditStarters

Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志

  • 接下去就要在pom.xml依赖文件中通过这个插件去生成相关的lombok依赖
    Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志

然后在文件中就会多出来以下依赖了

<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<optional>true</optional>
</dependency>

7.2 使用 @slf4j 输出日志

  • 有了依赖的支持,接下去我们就可以通过 @slf4j 这个注解去代替前面繁琐的日志对象创建过程了,这个注解会给当前的类提供一个log对象,使用这个对象就可以去调用对应日志级别了

Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志

@RequestMapping("/log/sayhi")
public String sayhi(){
    log.info("info log");
    log.warn("warn log");
    log.error("error log");
    return "log sayhi";
}

然后我们来运行一下试试,便可以观察到与前面获取到的日志信息是一样的~

Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志

7.3 lombok 原理解释

但是光这样子是不够的,我们要做到的是 知其然,知其所以然。对于lombok 来说,它呢是编译期间的一个框架

  • 通过我们之前的学习可以知道,对于一个普通的Java程序来说,当用户写好代码之后进行编译,然后生成一个.class为后缀的字节码文件,将其放到JVM虚拟机上去运行就可以让程序跑起来了

Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志

  • 但是对于lombok框架支持后,它就会与普通的java程序一同进行编译,然后生成.class为后缀的字节码文件

Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志

那怎么去证实呢?我们一起来看看

  • 首先我们在启动项目后到target文件中去进行查看,然后打开内部的controller文件

Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志

  • 在其内部我们看到了编译好的.class为后缀的字节码文件,将其拖入到IDEA中观察一下🔍

Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志

  • 将编译前后的文件进行对比我们可以发现,因为@Slf4j注解的缘故,出现了我们在前面所学习的Logger接口所新建出来的对象,不过这里叫做log
  • 那其实我们就看得很明确了,其实 lombok 的这个注解所做的工作其实就是在做生成日志对象的转换工作,这就是为何说 Spring面向注解开发 的原因了

Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志

7.4 lombok 更多注解说明

当然,lombok 这个框架可不知那么一个注解,它的功能还是很强大的,其中的很多注解都可以帮助我们快速地去进行开发

  1. 基本注解:
注解 作用
@Getter ⾃动添加 getter ⽅法
@Setter ⾃动添加 setter ⽅法
@ToString ⾃动添加 toString⽅法
@EqualsAndHashCode ⾃动添加 equals 和 hashCode ⽅法
@NoArgsConstructor ⾃动添加⽆参构造⽅法
@AllArgsConstructor ⾃动添加全属性构造⽅法,顺序按照属性的定义顺序
@NonNull 属性不能为 null
@RequiredArgsConstructor ⾃动添加必需属性的构造⽅法,final + @NonNull 的属性为必需
  1. 组合注解:
注解 作用
@Data @Getter + @Setter + @ToString +@EqualsAndHashCode +@RequiredArgsConstructor +@NoArgsConstructor
  1. ⽇志注解
注解 作用
@Slf4j 添加⼀个名为 log 的⽇志,使⽤ slf4j

八、总结与提炼

接下去来总结一下本文所学习的内容📖

  1. 首先我们简单地来聊了聊日志是什么:⽇志是程序中的重要组成部分,使⽤⽇志可以快速的发现和定位问题,SpringBoot 内容了⽇志框架:SLF4Jlogback 是我们最常用的两个,其二者通过 SLF4J 这个日志门面可以实现很好的解耦,方便后期的替换维护,与我们之前所讲的 JDBC 有着异曲同工之妙
  2. 然后我们又讲到了如何去获取日志对象:在这一块首先我们讲到了使用一个 工厂类LoggerFactory 去实现Logger接口,然后通过调用其中的方法并传入对应的参数来获取到对应的日志对象,接着再通过这个对象去调用【日志级别】来进行输出
  3. 然后我们便详细地说到了【日志级别】:其包含 6 个级别:
    • trace:微量,少许的意思,级别最低;
    • debug:需要调试时候的关键信息打印;
    • info:普通的打印信息(⭐默认⽇志级别⭐);
    • warn:警告,不影响使⽤,但需要注意的问题;
    • error:错误信息,级别较⾼的错误⽇志信息;
    • fatal:致命的,因为代码异常导致程序退出执⾏的事件。
  4. 然后呢我们又学了什么是日志持久化: 通过去设置 日志的保存路径 以及 ⽇志⽂件的⽂件名 便可以控制我们所观察到的日志信息
  5. 最后呢我们又学了一个很棒的框架: 它叫做 lombok,通过 lombok 提供的 @Slf4j 注解和 log 对象我们可以实现快速的打印⾃定义⽇志,当然我们还去好好地探究了一番这个注解究竟怎么一回事,做到了 “知其然,知其所以然”

以上就是本文要介绍的所有内容,诚挚感谢您对本文的观看🌹🌹🌹

Spring Boot日志:从Logger到@Slf4j的探秘,# Spring Boot,spring boot,java,日志文章来源地址https://www.toymoban.com/news/detail-773599.html

到了这里,关于Spring Boot日志:从Logger到@Slf4j的探秘的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SLF4J门面日志框架源码探索

    SLF4J即Simple Logging Facade for Java,它提供了Java中所有日志框架的简单外观或抽象。因此,它使用户能够使用单个依赖项处理任何日志框架,例如:Log4j,Logback和JUL(java.util.logging)。通过在类路径中插入适当的 jar 文件(绑定),可以在部署时插入所需的日志框架。如果要更换日志

    2024年02月09日
    浏览(64)
  • SpringBoot集成slf4j日志系统

    作者平台: | CSDN:blog.csdn.net/qq_4115394… | 掘金:juejin.cn/user/651387… | 知乎:www.zhihu.com/people/1024… | GitHub:github.com/JiangXia-10… | 微信公众号:1024笔记 本文大约4777字,预计阅读时长11分钟 日志系统作为一个应用系统的重要部分之一,它能够有助于我们在系统在线上环境中如果

    2023年04月19日
    浏览(41)
  • SLF4J日志框架在项目中使用

    SLF4J全称“Simple Logging Facade for Java”,作为各种日志框架的简单门面。例如: java.util.logging、logback 、 reload4j等。只需要切换日志框架的jar包依赖就可以切换日志框架。 SLF4J支持的日志框架包含如下: log4j:常用的日志框架,需要有配置文件log4j.properties logback:可以通过logba

    2024年02月02日
    浏览(41)
  • SLF4J门面日志框架源码探索 | 京东云技术团队

    SLF4J即Simple Logging Facade for Java,它提供了Java中所有日志框架的简单外观或抽象。因此,它使用户能够使用单个依赖项处理任何日志框架,例如:Log4j,Logback和JUL(java.util.logging)。通过在类路径中插入适当的 jar 文件(绑定),可以在部署时插入所需的日志框架。如果要更换日志

    2024年02月11日
    浏览(44)
  • 6.2 SpringBoot日志入门实战 SLF4J + Logback

    如果你是一位Java开发者,那么你肯定知道Log日志的重要性,它是我们了解程序内部运行真像,分析和定位问题的最直接手段!对于任何企业级的程序,日志记录是必须的! 在SpringBoot框架中,集成了常用的日志框架,包括SLF4J、Logback、Log4j2、Java Util Logging等,其中,Logback是

    2024年02月08日
    浏览(41)
  • 学习SpringBoot使用slf4j日志并输出到文件中

    再使用前,先了解一下介绍,否则你也不会用! 1、日志级别 SLF4J将日志分为trace、debug、info、warn、error五个级别,每个级别对应记录不同的日志,对应不同的使用场景。 日志级别从低到高分为 TRACE DEBUG INFO WARN ERROR FATAL 如果设置为 WARN ,则低于 WARN 的信息都不会输出 一般设

    2024年02月06日
    浏览(44)
  • 微服务学习系列15:日志框架slf4j使用和原理

    目录   前言 一、slf4j 项目Github地址: slfj4j桥接API slf4j 项目模块描述 二、slf4j-api 简单使用 代码分析  三、基础知识 外观模式 适配器模式 什么是桥接模式 什么是SPI 什么是API 四、设计分析 参考 slf4j主要是为了给Java日志访问提供一个标准、规范的API框架,其主要意义在于提

    2024年02月07日
    浏览(37)
  • 【SpringBoot中使用SLE4J日志框架启动报错:SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinde】

    1.1 出现的问题 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. 1.2 原因分析 检查自己的maven依赖,发现已经引入了slf4j-api了,这是为什么呢?其原因是,SLF4J本身

    2024年02月13日
    浏览(37)
  • SpringBoot集成slf4j日志和logback.xml配置详解

    slf4j,即(Simple Logging Facade for Java,简单门面日志)。它是对所有日志框架制定的一种 规范、标准、接口 ,并不是一个框架的具体的实现,它只服务于各种各样的日志系统。 slf4j提供了统一的记录日志的接口,对不同日志系统的具体实现进行了抽象化,只要按照其提供的方法记

    2024年02月03日
    浏览(73)
  • 记录一次@Slf4j log.info 日志信息未输出到日志文件的问题

    Spring Boot的起步依赖(如spring-boot-starter-web)中已经包含了Slf4j的依赖,无需额外添加。: 当你在项目中添加了 spring-boot-starter-web 依赖后,它将自动引入以下关键组件和依赖项: Spring MVC:用于构建Web应用程序的模型-视图-控制器(Model-View-Controller)框架。 Tomcat(或其他嵌入式

    2024年02月06日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包