【JavaEE】SpringBoot的日志

文章介绍了日志在问题定位、系统监控等方面的作用,讲解了SpringBoot中使用的日志门面slf4j和实现logback。讨论了日志打印的注意事项,日志级别的类型、作用及如何修改。还提到了日志的永久化存储,包括配置日志文件路径和名称。最后,文章演示了如何使用lombok简化日志打印。
摘要由CSDN通过智能技术生成

目录

日志作用

SpringBoot日志框架

日志打印

日志级别

类型

作用

修改级别

日志永久化

配置日志文件目录

配置日志文件名

简化日志打印和永久化——lombok


日志作用

  1. 问题定位:可以帮助开发人员快速找到问题出现的位置
  2. 系统监控:可以把系统的运行情况、性能调优等信息记录下来,方便系统监控和性能调优
  3. 记录历史:记录一些关键操作、异常情况,方便追溯问题根源
  4. 程序调试:记录日志来了解程序运行的情况,从而更方便的进行调试
  5. 安全审计:记录用户行为,找到恶意用户,以保证系统的安全性

SpringBoot日志框架

日志门面:是一个抽象层,它提供了统一的日志接口,使应用程序能够按照一致的方式记录日志,而不需要关心具体的日志实现。在应用程序中使用日志门面接口编写代码,使得应用程序可以在运行时动态地切换具体的日志实现,而不需要修改代码。其中SpringBoot使用的是slf4j

日志实现:是实现了日志门面接口的具体日志框架,应用程序在运行时通过配置文件指定所需要的具体日志实现,日志门面就会调用相应的日志实现来记录日志信息。其中SpringBoot使用的是logback


日志打印

因为日志是为当前类服务的,所以使用private

因为static就可以让整个类共享该成员,而不用每创建一个实例就创建一个新的日志类;同时在多线程情况下,使用static就可以避免出现线程安全情况

使用final主要是为了日志对象被修改,从而保证日志的正确性和可靠性。

package com.example.demo.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/test")
public class LogController {
    private static final Logger logger = LoggerFactory.getLogger(LogController.class);
    @RequestMapping("/log")
    public void testLog() {
        logger.trace("trace");
        logger.debug("debug");
        logger.info("info");
        logger.warn("warn");
        logger.error("error");
    }

}

登录localhost:9999/test/log 即可看到该日志。但是只显示了info warn error,这就与下面的日志级别有关系了。

使用LogController.class打印的日志

 

使用"LogController"打印的日志


日志级别

类型

有小到大依次为:

  1. trace:调试代码时输出程序执行的详细信息
  2. debug:输出运行时的调试信息,帮助程序员定位到应用程序的问题
  3. info:输出一些重要的事件级别,比如程序启动、用户操作等。一般用于记录程序运行状态和关键操作的结果。INFO级别的日志通常会被用于监控应用程序的运行状态,以便及时发现和处理问题。
  4. warn:输出一些警告信息,表明系统出现了一些潜在的问题,但并不影响系统正常的运行。WARN级别的日志通常需要引起注意,但不需要立即采取行动,可以在相应的时候再进行处理。
  5. error:输出一些错误信息,表明系统出现了一些严重的问题,需要立即采取行动来解决。ERROR级别的日志通常用于记录系统崩溃、网络连接异常、SQL执行错误等严重的问题,对于保障系统的正常运行和及时发现问题非常重要。
  6. fatal:因为代码异常而导致程序退出的事件(不会出现在日志中)。

作用

  1. 控制日志输出的详细程度
    通过设置不同的日志级别,可以根据实际情况控制应用程序输出的日志内容的详细程度,避免输出过多或过少的日志。打印信息的时候只会打印设置当前日志级别和高于设置的日志。比如SpringBoot默认设置的是info,所以我们只能看到info、warn和error信息
  2. 帮助排查应用程序的问题
    在应用程序出现问题时,可以通过查看日志文件中相应级别的日志信息来定位问题所在,例如DEBUG级别的日志可以帮助我们追踪应用程序的执行过程,ERROR级别的日志可以帮助我们快速定位错误信息等。
  3. 提高性能
    日志输出是一项相对较为耗时的操作,设置合适的日志级别可以避免无谓的日志输出,提高应用程序的性能和效率。

修改级别

在配置文件中修改日志级别,现在来修改一下上一个程序的日志级别

logging:
  level:
    root: error
    com:
      example:
        demo:
          controller: trace  #把当前测试的包设置成最小的trace


日志永久化

上述的日志只是打印在了控制台上,并没有记录到文件(持久化)当中,这显然是不科学的。把日志记录到文件中需要需要在配置文件中修改。

配置日志文件目录

logging:
  file:
    # \\ 防止被当成转移字符
    path: D:\\Test\\Log
  level:
    root: error
    com:
      example:
        demo:
          controller: trace

配置日志文件名

logging:
  file:
    # \\ 防止被当成转移字符
    name: D:\\Test\\Log\\spring2.log
  level:
    root: error
    com:
      example:
        demo:
          controller: trace


简化日志打印和永久化——lombok

输出日志的对象默认是log,这是slf4j中提供的对象。

package com.example.demo.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/testlombok")
@Slf4j
public class LogLombokController {
    @RequestMapping("/log")
    public void testLog() {
        log.trace("trace");
        log.debug("debug");
        log.info("info");
        log.warn("warn");
        log.error("error");
    }

}


有什么错误评论区指出。希望可以帮到你。 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值