SpringBoot与日志

        在代码有问题的时候,很多人应该都是通过 debug 的方式去排查,往往忽略了日志的重要性。好的日志管理可以快速定位问题出现的位置,也可以提高代码的阅读性。

一、Logging 介绍

        Spring Boot 为 Java Util Logging,Log4J2 和 Logback 提供了默认配置。每个日志框架,都默认配置了控制台输出,并且还提供了日志文件输出功能。

        如果你使用 Spring Boot 的 Starters,那么默认使用的日志框架是 Logback。Spring Boot 底层也对 Java Util Logging,Commons Logging,Log4J 或 SLF4J 日志框架进行了适配。因此只要进行相关的设置,就可以实现日志框架的切换。

        在不修改任何日志依赖项的时候,Spring Boot 的日志框架就可以正常运行。

二、Logging 格式

        Spring Boot 默认日志输出如下:

        日志介绍(从左到右) :

  • 日期时间:精确到毫秒
  • 日志级别:ERROR, WARN, INFO, DEBUG or TRACE
  • 进程 id
  • 分割符:用于区分实际的日志记录
  • 线程名:括在方括号中
  • 日志名字:通常是源类名
  • 日志信息

三、Logging 级别

        日志级别从低到高依次是:TRACE < DEBUG < INFO < WARN < ERROR < FATAL。Logback 日志不提供 FATAL 级别,它被映射到 ERROR 级别。

        Spring Boot 只会输出比当前级别高的日志,默认的日志级别是 INFO,因此低于 INFO 级别的日志记录都不输出。

        可以在 application.yml配置文件中通过 logging.level.<logger-name>=<level> 方式设置日志的级别。

        在默认级别(INFO)下执行下面的代码:

package org.ywz.springbootdemo;


import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class LoggerTest {
    private static final Logger logger = LoggerFactory.getLogger(LoggerTest.class);

    @Test
    public void test() {
        logger.trace("trace 级别的日志");
        logger.debug("debug 级别的日志");
        logger.info("info 级别的日志");
        logger.warn("warn 级别的日志");
        logger.error("error 级别的日志");
    }
}

        控制台输出如下:

 四、配置

日志文件输出

        默认情况下,SpringBoot 日志仅输出在控制台,不会写入日志文件。如果想要写入日志文件,需要在application.yml 中设置 logging.file 或 logging.path 属性。

  • logging.file:设置文件,可以是绝对路径,也可以是相对路径。
  • logging.path:设置目录,会在该目录下创建一个 spring.log 文件,写入日志内容。

        日志文件在达到 10 MB 时会轮换,并且与控制台输出一样,默认情况下会记录 ERROR 级别,WARN 级别和 INFO 级别的消息。 可以使用 logging.file.max-size 属性更改大小限制。

通用配置

        下面是 application.properties 文件中关于日志的配置。

server:
  port: 8080

# 启用日志颜色
spring:
  output:
    ansi:
      enabled: always

logging:
  level:
    root: info # 设置日志级别
  file:
    # name: ywz.log   # 日志文件名 无法和 logging.file.path 组合使用
    path: ./logs/   # 日志输出路径 会在路径下生成一个spring.log文件
  pattern: # yml文件无法使用%开头
    console: '%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n' # 控制台日志格式
    file: '%d{yyyy/MM/dd-HH:mm} [%thread] %-5level %logger- %msg%n' # 保存在日志文件中的格式

        虽然 Spring Boot 适配了多种日志框架,一般情况下,我们不会切换掉 Logback,因为 Logback 相对于其他的日志框架速度更快,占用内存更少。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

游王子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值