当前位置: 首页 > news >正文

3.4 Spring Boot 日志配置

第3章 Spring Boot 的系统配置

3.1 Spring Boot 系统配置文件
3.2 Spring Boot 自定义配置项
3.3 Spring Boot 其他配置
3.4 Spring Boot 日志配置
3.5 实战:Spring Boot 实现系统多环境配置

3.4 Spring Boot 日志配置

日志对于系统监控、故障定位非常重要,比如当生产系统发生问题时,完整清晰的日志记录有助于快速定位问题。接下来介绍 Spring Boot 对日志的支持。

3.4.1 Spring Boot 日志简介

Spring Boot 自带 spring-boot-starter-logging 库实现系统日志功能,spring-boot-starter-logging 组件默认使用 LogBack 日志记录工具。系统运行日志默认输出到控制台,也能通过配置输出到文件中。

下面通过示例来演示 Spring Boot 项目配置日志的功能。

修改 pom.xml 文件,添加spring-boot-starter-logging依赖。

pom.xml

        <!--spring boot 日志(spring-boot-starter-web 包含 spring-boot-starter,而spring-boot-starter 包含 spring-boot-starter-logging依赖包,所以引入spring-boot-starter-web之后可以不需要再引入spring-boot-starter-logging)--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></dependency>

启动项目,查看控制台的日志输出情况,如图所示。

SpringBoot控制台启动日志(默认日志格式).png

备注:

如果项目中有引入 spring-boot-starter-web依赖包 或 spring-boot-starter依赖包,则可以不用引入spring-boot-starter-logging依赖包。

原因:这是因为spring-boot-starter-web 包含 spring-boot-starter,而spring-boot-starter 包含 spring-boot-starter-logging依赖包,所以引入spring-boot-starter-web之后可以不需要再引入spring-boot-starter-logging.

3.4.2 配置日志输出格式

在 Spring Boot 项目中配置日志功能之后,如何定制自己的日志格式、自定义记录的信息呢?

Spring Boot 提供了 logging.pattern.consolelogging.pattern.file 配置项来定制日志输出格式,只需在 application.properties 文件中添加 logging.pattern.consolelogging.pattern.file 的配置项即可:

# 3.4.2 配置日志输出格式
logging.pattern.console=%d{yyyy-MM-dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n
logging.pattern.file=%d{yyyy-MM-dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n

上述配置的示例中,对应符号的含义如下:

  • %d{yyyy-MM-dd-HH:mm:ss.SSS}:日志输出时间。
  • %thread:输出日志的进程名,这在 Web 应用以及异步任务处理中很有用。
  • %-5level:日志级别,使用5个字符靠左对齐。
  • %logger:日志输出者的名称。
  • %msg:日志消息。
  • %n:平台的换行符。

修改完配置项后重启项目,查看控制台的日志输出情况,如图所示。
SpringBoot控制台启动日志(定制日志格式).png

Spring Boot 控制台启动日志的格式已经改成配置的格式。

3.4.3 配置日志输出级别

一般而言,系统的日志级别为 TRACE < DEBUG < INFO < WARN < ERROR <FATAL,级别逐渐提高。如果日志级别设置为 INFO,则意味着 TRACE 和 DEBUG 级别的日志都不会输出。

  • FATAL:致命等级的日志,指发生了严重的会导致应用程序退出的事件。
  • ERROR:错误等级的日志,指发生了错误,但是不影响系统运行。
  • WARN: 警告等级的日志,指发生了异常,可能是潜在的错误。
  • INFO: 信息等级的日志,指一些在粗粒度级别上需要强调的应用程序运行信息。
  • DEBUG:调试等级的日志,指一些细粒度的对于程序调试有帮助的信息。
  • TRACE:跟踪等级的日志,指一些包含程序运行详细过程的信息。

Spring Boot 通过 logging.level 配置项来设置日志输出级别。

下面通过示例演示 Spring Boot 日志输出级别。

LogDemo.java

package com.example.helloworld.log;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** Log级别测试类*/
@Configuration
public class LogDemo {/*** 一般而言,系统的日志级别为 TRACE < DEBUG < INFO < WARN < ERROR <FATAL,级别逐渐提高。如果日志级别设置为 INFO,则意味着 TRACE 和 DEBUG 级别的日志都不会输出。** FATAL:致命等级的日志,指发生了严重的会导致应用程序退出的事件。* ERROR:错误等级的日志,指发生了错误,但是不影响系统运行。* WARN: 警告等级的日志,指发生了异常,可能是潜在的错误。* INFO: 信息等级的日志,指一些在粗粒度级别上需要强调的应用程序运行信息。* DEBUG:调试等级的日志,指一些细粒度的对于程序调试有帮助的信息。* TRACE:跟踪等级的日志,指一些包含程序运行详细过程的信息。*/Logger logger = LoggerFactory.getLogger(getClass());@Beanpublic String logMethod() {logger.trace("LogDemo trace 日志...");logger.debug("LogDemo debug 日志...");logger.info("LogDemo info 日志...");logger.warn("LogDemo warn 日志...");logger.error("LogDemo error 日志...");return "hello log";}}

在上面的示例中,针对每个日志级别输出一行日志。我们可以调整输出的日志级别,让其只有在该级别以后的高级别生效。

(1)默认整个项目的日志级别为INFO

Spring Boot 默认整个项目的日志输出级别为 INFO。

启动项目验证日志输出情况,如图所示。
系统控制台启动日志(默认日志输出级别测试).png

如图所示,Spring Boot 控制台输出的系统启动日志级别为 INFO 级别,输出了 INFO、WARN 和 ERROR 的日志。

(2)指定整个项目的日志级别

配置日志输出级别,在 application.properties 中添加如下配置:

logging.level.root=WARN

在上面的示例中,我们使用 logging.level.root 指定整个项目的日志输出级别为WARN。

启动项目验证日志输出情况,如图所示。
系统控制台启动日志(配置整个项目的日志输出级别为WARN).png

如图所示,Spring Boot 控制台输出的系统启动日志级别为 WARN 级别,输出了 WARN 和 ERROR 的日志。

(3)对某个包指定单独的日志级别

配置日志输出级别,在 application.properties 中添加如下配置:

logging.level.root=INFO
logging.level.com.example.helloworld.log=WARN

在上面的示例中,我们将整个项目日志级别设置为INFO,同时将指定包com.example.helloworld.log下的日志级别设置为WARN。

启动项目验证日志输出情况,如图所示。
整个项目日志级别设置为INFO,同时将指定包com.example.helloworld.log下的日志级别设置为WARN).png

如图所示,Spring Boot 控制台输出的系统启动日志级别为 INFO 级别,输出INFO、WARN、ERROR日志;而com.example.helloworld.log包下LogDemo的日志级别设置为WARN,输出WARN、ERROR日志。

3.4.4 保存日志文件

一般情况下,在开发环境中习惯通过控制台查看日志,但是生产环境中需要将日志信息保存到磁盘上,以便于日后的日志查询。应该如何配置才能将日志信息保存到日志文件内呢?下面演示保存日志文件的过程。

在 resources 目录下的 applicaiton.properties 配置文件中添加如下配置项:

logging.file.name=E:/var/log/spring_log.log

在上面的示例中,我们使用 logging.file.name 指定日志文件的路径与名字。

重新启动项目,可以看到在 E:/var/log 目录下生成了 spring_log.log 文件,该文件的内容和控制台打印输出的内容一致,如图所示。
SpringBoot保存的日志文件.png

拓展

日志配置——logging.file.namelogging.file.path的使用区别?


(1)logging.file.name可以指定日志文件的路径与名字

示例:
logging.file.name=E:/var/log/spring_log.log
则该日志文件的路径为E:/var/log,日志文件的名字是spring_log.log

(2)logging.file.path可以指定日志文件的路径,而不能指定名字

示例:
logging.file.path=E:/var/log
则该日志文件的路径为E:/var/log,日志文件的名字是默认的spring.log

(3)logging.file.name和logging.file.path不能同时生效

在配置了两者的情况下,以logging.file.name为准。

来源:《Spring Boot 从入门到实战》学习笔记

http://www.lryc.cn/news/19127.html

相关文章:

  • 3款百里挑一的国产软件,逆天好用,装了就舍不得卸载
  • Java实现在线沟通功能
  • 识别密文加密类型
  • node报错
  • 如何使用开源 BI 工具 DataEase 实现系列数据分析呢?
  • 金仓数据库安装
  • 深入浅出Webpack2-快速掌握webpack基本配置
  • 如何使评论具有可操作性?取悦客户的指南
  • 一文带你彻底搞懂Nginx反向代理
  • 手写SpringBoot的starter
  • pytorch1.2.0+python3.6
  • WindowsPowerShell 停止、启动、暂停和重启服务、卸载服务
  • 数据库专题
  • 浅谈MySQL索引
  • 安装包UI美化之路-通过nsNiuniuSkin来做Electron程序的打包、发布与升级
  • 飞鹅打印机怎么样?飞鹅打印机好用吗?飞鹅打印机怎么知道订单是否漏单?
  • 网络协议(八):传输层-TCP(三次握手、四次挥手原理)
  • 最新OpenMVG编译安装与逐命令运行增量式和全局式SfM教程
  • 数据结构与算法系列之插入排序
  • Text to image论文精读ALR-GAN:文本到图像合成的自适应布局优化
  • windows版 redis在同一局域网下互联
  • Near-Optimal Bayesian Online Assortment of Reusable Resources
  • 数据库复习2
  • 公众号运营之竞品分析,教你拆解公众号
  • python常见问题详解
  • MyBatis-常用SQL操作
  • DSPE-PEG-TCO;磷脂-聚乙二醇-反式环辛烯科研用化学试剂简介
  • 华为OD机试真题Java实现【最小施肥机能效】真题+解题思路+代码(20222023)
  • 【问题记录】【排查问题的方法总结】vue3中数据失去响应式?为什么数据变了,视图只更新了一次就不再更新了?
  • 基于遗传算法的柔性生产调度研究(Matlab代码实现)