首页 专题 文章 代码 归档
SpringBoot的日志功能
2020.02.09 10:46 2020.02.09 10:46

1. 日志功能

进行项目开发时,日志的作用是绝对不可忽略的。记录好日志,是排除bug的良药。

在日志输出时,建议不要使用System.out.println() 输出日志信息,此种方法会增加资源的消耗且灵活性比较弱,不方便进行日志等级的控制,有时会干扰正常的日志输出。


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

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

提供了这么多日志框架,应该选择哪一个呢?不用担心,在不修改任何日志依赖项的时候,Spring Boot 的日志框架就可以正常运行。

1.1. 日志格式

默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台。

@Test
void test2() {
    Logger logger = LoggerFactory.getLogger(getClass());
    logger.info("hello, this is info logger");
}

截图-1581162563

从上图可以看到,日志输出内容元素具体如下:

  • 时间日期:精确到毫秒
  • 日志级别:ERROR, WARN, INFO, DEBUG or TRACE
  • 进程ID
  • 分隔符:— 标识实际日志的开始
  • 线程名:方括号括起来(可能会截断控制台输出)
  • Logger名:通常使用源代码的类名
  • 日志内容

1.2. 添加日志依赖

spring-boot-starter 其中包含了 spring-boot-starter-logging ,该依赖内容就是 Spring Boot 默认的日志框架 logback,所以实际开发中我们不需要直接添加该依赖。

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-logging -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
    <version>2.2.4.RELEASE</version>
</dependency>

默认:

截图-1581162700

1.3. 控制台输出

日志级别从低到高分为:

TRACE < DEBUG < INFO < WARN < ERROR < FATAL

如果设置为 WARN ,则低于 WARN 的信息都不会输出。Spring Boot 中默认配置 ERROR 、 WARN 和 INFO 级别的日志输出到控制台。

同时还可以通过启动您的应用程序 --debug 标志来启用“调试”模式(开发的时候推荐开启),以下两种方式皆可:

1、在运行命令后加入 --debug 标志,如:java -jar springTest.jar --debug

2、在 application.properties 中配置 debug=true ,该属性置为 true 的时候,核心 Logger (包含嵌入式容器、hibernate、spring)会输出更多内容,但是你 自己应用的日志并不会输出为 DEBUG 级别 。

1.4. 使用方法

@Test
void test2() {
    Logger logger = LoggerFactory.getLogger(getClass());
    logger.info("hello, this is info logger");
}

1.5. 输出日志到文件

默认情况下,Spring Boot将日志输出到控制台,不会写到日志文件。

使用 Spring Boot 喜欢在 application.properties 或 application.yml 配置,这样只能配置简单的场景,保存路径、日志格式等,复杂的场景(区分 info 和 error 的日志、每天产生一个日志文件等)满足不了,只能自定义配置,下面会演示。

logging:
  file:
#    path: my.log
    name: spring.log
本节阅读完毕!
二维码图片 扫描关注我们哟