SpringBoot 日志

目录

一,日志概述

二,SpringBoot 日志

2.1 日志样式

2.2 打印日志

2.3 日志级别

2.4 日志配置

配置打印日志级别

日志持久化

日志文件分割

三, @Slf4j 注解


一,日志概述

日志对于我们来说并不陌生,在刚开始学习Java的时候,通常会使用System.out.print来打印日志发现和定位问题,或者根据日志来分析程序的运行过程。但是随着项目越来越复杂,我们对日志的打印也有了更高的要求:

  • 日志可以记录系统或应用程序在运行过程中的各种事件,包括错误、警告、异常信息等。当系统出现问题时,日志成为首要的问题诊断工具,帮助开发者快速定位问题原因,从而采取相应的解决措施。
  • 日志可以记录系统或应用的关键安全事件,如用户登录、权限变更、敏感操作等。这些记录对于安全审计至关重要,可以帮助组织追踪潜在的安全威胁,及时采取措施防止数据泄露或其他安全问题。
  • 日志还可以记录系统的版本变更信息,包括代码更新、配置修改等。这些信息对于版本控制和变更管理至关重要,可以帮助开发者追踪系统状态的变化,确保变更的准确性和可追溯性。
  • .........

所以我们需要使用一些专门的日志框架,下面我们就来介绍一下在SpringBoot中如何快速打印日志。

二,SpringBoot 日志

2.1 日志样式

我们先来观察一下系统打印的日志:

2.2 打印日志

想要打印出上述类型的日志,我们需要获取日志对象中获取⽇志对象中获取⽇志对象:

@RestController
@RequestMapping("/demo4")
public class demo4 {
    //使用日志工厂获取日志对象
    //getLogger()的参数是当前的类对象
    private static Logger logger = LoggerFactory.getLogger(demo4.class);

    @RequestMapping("/logger")
    public String printLog(){
        logger.info("这是一个日志");
        return "打印日志";
    }
}

注:Logger 对象是 org.slf4j 包下的,注意不要导错包!!!

2.3 日志级别

日志级别从高到低依次为:fatal,error,warn,info,debug,trace

  • FATAL:致命信息,表示需要立即被处理的系统级错误
  • ERROR:错误信息,级别较高的错误日志信息,但任然不系统的继续运行
  • WARN:警告信息,不影响使用,但是需要注意的问题
  • INFO:普通信息,用于记录应用程序正常运行时的一些歇息
  • DEBUG:调试信息,需要调试时打印的关键信息打印
  • TRACE:追踪信息,比DEBUG更细粒度的信息事件(除非有特殊用意,否则使用DEBUG替代)

针对不同的级别,Logger对象提供了不同的方法来输出日志:

@RestController
@RequestMapping("/demo4")
public class demo4 {
    private static Logger logger = LoggerFactory.getLogger(demo4.class);
    @RequestMapping("/logger")
    public String printLog(){
        //没有fatal方法,因为一般遇到这种问题,程序会直接崩溃,不需要提醒也知道出错了
        logger.error("error级别日志");
        logger.warn("warn级别日志");
        logger.info("info级别日志");
        logger.debug("debug级别日志");
        logger.trace("trace级别日志");
        return "打印日志";
    }
}

观察控制台的结果,可以发现只有info级别以上的日志,这与日志的配置有关,日志的输出级别默认是 info 级别,所以只会大于等于info级别的日志,即 info,warn,error

2.4 日志配置

配置打印日志级别

logging:
  level:
    com:
      example:
        javaeespringioc:
          demos: trace
    root: info

日志持久化

日志持久化有两种方式:1.配置日志文件名 2.配置存储目录

# 配置日志文件名
logging:
  file:
    name: logger/springboot.log

# 配置日志文件目录
# 该方式只能设置路径,文件名称是固定的spring.log
logging:
  file:
    path: logger1/springboot.log

注:如果两个同时使用,那么以logging.file.name为准!!!

日志文件分割

logging.logback.rollingpolicy.file-name-pattern:配置日志分割后的文件格式;logging.logback.rollingpolicy.max-file-size:日志文件超过这个大小就自动分割

logging:
  file:
    path: logger1/springboot.log
  logback:
    rollingpolicy:
      max-file-size: 1KB
      file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i

三, @Slf4j 注解

每次使用private static Logger logger = LoggerFactory.getLogger(...)方法很繁琐,且在每个类中创建时处理参数不同,其他都一样,所以可以使用 lombok 框架,它为我们提供了 @Slf4j 注解。

在.xml文件中添加 lombok 依赖

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

使用 @Slf4j 注解

@Slf4j
@RestController
@RequestMapping("/demo4")
public class demo4 {
    @RequestMapping("/logger")
    public String printLog(){
        log.error("error级别日志");
        log.warn("warn级别日志");
        log.info("info级别日志");
        return "打印日志";
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一叶祇秋

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

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

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

打赏作者

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

抵扣说明:

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

余额充值