SpringBoot的日志

目录

一.日志的作用

二.日志如何使用

2.1自定义日志 

2.2日志格式

三.日志级别

3.1级别的分类和使用

3.2日志持久化

四.使用lombok进行日志输出


一.日志的作用

日志有什么用?

如果你的项目不是很大,你会发现其实没什么重要的,但是如果你的项目很复杂,没有日志,你会感觉自闭的

        ⽇志是程序的重要组成部分,想象⼀下,如果程序报错了,不让你打开控制台看⽇志,那么你能找到报错的原因吗?不可能,完全不可能的啊!
日志常见的作用:
  • 发现问题、定位问题
  • 可记录用户的登记日志
  • 记录系统的操作时间
  • 记录程序的执行时间

二.日志如何使用

        在正常SpringBoot运行之后,就会有默认的日志输出!

因此我们可以发现,3个问题:

  1. SpringBoot内置了日志框架。
  2. 默认情况下,日志并非是开发者定义和打印。
  3. 日志默认是打印在控制台上,而控制台的日志是不能保存的,那怎么保存呢?

2.1自定义日志 

        日志,获取日志对象,通过相关语法打印日志!

日志工厂:LoggerFactory    该类,是将每个类的类型传递进去,才能知道日志的归属类!

一般认为一个类中有一个日志对象即可,所以我们在定义日志对象时可以将其定义为静态的私有属性

// 1.得到⽇志对象
private static Logger logger = LoggerFactory.getLogger(UserController.class
);

        SLF4J(Simple Logging Facade for Java)框架。SLF4J 是一个为各种日志记录器提供统一抽象的框架,它本身并不提供日志记录功能,而是通过与不同的日志记录器实现(如 Logback、Log4j2)进行绑定来实现日志记录功能。 但是springBoot里内置此框架。

但是由于Logger对象是属于org.slf4j包下的,因此我们需要导包。

打印自定义日志:

        要打印日志消息,可以使用日志记录器的不同级别的方法,例如:

  1. 跟踪级别(Trace):记录最详细的日志信息,通常用于调试。可以使用 logger.trace("message") 方法来记录跟踪级别的日志。

  2. 调试级别(Debug):记录调试信息,通常用于诊断问题。可以使用 logger.debug("message") 方法来记录调试级别的日志。

  3. 信息级别(Info):记录一般信息,通常用于显示程序的运行状态。可以使用 logger.info("message") 方法来记录信息级别的日志。

  4. 警告级别(Warn):记录警告信息,表示潜在的问题,但不会影响程序的正常运行。可以使用 logger.warn("message") 方法来记录警告级别的日志。

  5. 错误级别(Error):记录错误信息,表示程序出现了错误,但不会导致程序崩溃。可以使用 logger.error("message") 方法来记录错误级别的日志。

  6. 严重错误级别(Fatal):记录严重错误信息,表示程序出现了严重问题,可能导致程序崩溃。不是所有的日志记录器都支持这个级别。

我们先使用Info信息级别的展示一下:

2.2日志格式

日志一共包含了6个消息:

  • 打印时间
  • 打印级别
  • 线程名称
  • 线程ID
  • 执行类名
  • 日志消息

三.日志级别

日志级别有什么用呢?

  • 通过在应用程序中使用不同级别的日志记录,开发人员可以更好地了解应用程序的运行情况,快速诊断问题,并及时采取适当的措施来解决。在生产环境中,合理设置日志级别可以降低日志记录的数量,提高系统性能,并帮助管理员快速定位和解决问题。

3.1级别的分类和使用

日志级别分类:

  • trace:微量,少许的意思,级别最低;
  • debug:需要调试时候的关键信息打印;
  • info:普通的打印信息(默认⽇志级别);
  • warn:警告,不影响使⽤,但需要注意的问题;
  • error:错误信息,级别较⾼的错误⽇志信息;
  • fatal:致命的,因为代码异常导致程序退出执⾏的事件

等级从上往下,如果设置了warn级别,则无法收到info以上的信息了。

在SpringBoot里日志级别设置方法:

logging:
 level:
  root: error

设置之后,你会发现启动项目之后,无论是默认的日志输出还是,日志记录器的日志,不会再有error以下的级别了!

3.2日志持久化

        在开发项目时,我们的日志不应该一直显示在控制台吧,应该将日志保存下来,而需要持久化,两种方式:

  1. 我们需要在配置文件中指定日志的存储目录,
  2. 指定日志保存文件名 

如此SpringBoot会将日志写入到相应的目录或者文件!

1.配置文件:

# 设置⽇志⽂件的⽬录
logging:
  file:
    path: D:\\baidu\\home

启动项目之后,会自动生成一个名为Spring.log文件

2.配置日志文件的文件名:

#日志文件文件名的设置
logging:
  file:
    name: D:\\baidu\\home\\springboot.log

该方法也可以自动生成所定义的日志输出文件! 

四.使用lombok进行日志输出

        如果想要获取日志,我们需要使用LoggerFactory类的getLogger(xxx.class)方法,很麻烦,所以为了便利,我们可以采取lombok进行简单输出。

需要的依赖和注解: 

  1. 添加 lombok 框架支持
  2. 使用@slf4j注解输出日志

第一步:添加lombok依赖

在SpringBook项目里添加lombok依赖,如果存在则省略这步!

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

第二步 输出日志:

@RestController //RestController = Controller + ResponseBody
@Slf4j //给当前类中添加一个叫做 log 的日志对象
public class LogController {
 
    @RequestMapping("/log/sayHi")
    public String sayHi() {
        log.info("aaaa");
        log.error("bbbb");
        return "log sayHi";
    }
}

相当于使用@Slf4j 代替 LoggerFactory.getLogger  在该类中添加了一个log对象。

额外补充:如果添加了Lombok依赖,我们可以使用@Data注解,在类上使用,该类的所有元素就都有了get和set方法

这个@Data很牛逼的,相当于很多注解之和!

@Data 注解相当于以下几个注解的组合:

  1. @ToString: 自动生成 toString() 方法,用于打印对象的字符串表示形式。
  2. @EqualsAndHashCode: 自动生成 equals() 和 hashCode() 方法,用于对象的比较和哈希计算。
  3. @Getter: 自动生成所有字段的 getter 方法。
  4. @Setter: 自动生成所有字段的 setter 方法。
  5. @RequiredArgsConstructor: 生成一个包含所有必需字段的构造函数。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tq02

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值