德阳网站优化,大数据获客,建外贸企业网站,wordpress 自动博客第3章 Spring Boot 的系统配置 3.1 Spring Boot 系统配置文件 3.2 Spring Boot 自定义配置项 3.3 Spring Boot 其他配置 3.4 Spring Boot 日志配置 3.5 实战#xff1a;Spring Boot 实现系统多环境配置 3.4 Spring Boot 日志配置
日志对于系统监控、故障定位非常重要#xf… 第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--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-logging/artifactId/dependency启动项目查看控制台的日志输出情况如图所示。 备注 如果项目中有引入 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.console 和 logging.pattern.file 配置项来定制日志输出格式只需在 application.properties 文件中添加 logging.pattern.console 和 logging.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平台的换行符。 修改完配置项后重启项目查看控制台的日志输出情况如图所示。
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。
启动项目验证日志输出情况如图所示。
如图所示Spring Boot 控制台输出的系统启动日志级别为 INFO 级别输出了 INFO、WARN 和 ERROR 的日志。
2指定整个项目的日志级别
配置日志输出级别在 application.properties 中添加如下配置
logging.level.rootWARN在上面的示例中我们使用 logging.level.root 指定整个项目的日志输出级别为WARN。
启动项目验证日志输出情况如图所示。
如图所示Spring Boot 控制台输出的系统启动日志级别为 WARN 级别输出了 WARN 和 ERROR 的日志。
3对某个包指定单独的日志级别
配置日志输出级别在 application.properties 中添加如下配置
logging.level.rootINFO
logging.level.com.example.helloworld.logWARN在上面的示例中我们将整个项目日志级别设置为INFO同时将指定包com.example.helloworld.log下的日志级别设置为WARN。
启动项目验证日志输出情况如图所示。
如图所示Spring Boot 控制台输出的系统启动日志级别为 INFO 级别输出INFO、WARN、ERROR日志而com.example.helloworld.log包下LogDemo的日志级别设置为WARN输出WARN、ERROR日志。
3.4.4 保存日志文件
一般情况下在开发环境中习惯通过控制台查看日志但是生产环境中需要将日志信息保存到磁盘上以便于日后的日志查询。应该如何配置才能将日志信息保存到日志文件内呢下面演示保存日志文件的过程。
在 resources 目录下的 applicaiton.properties 配置文件中添加如下配置项
logging.file.nameE:/var/log/spring_log.log在上面的示例中我们使用 logging.file.name 指定日志文件的路径与名字。
重新启动项目可以看到在 E:/var/log 目录下生成了 spring_log.log 文件该文件的内容和控制台打印输出的内容一致如图所示。 拓展 日志配置——logging.file.name与logging.file.path的使用区别 1logging.file.name可以指定日志文件的路径与名字 示例 logging.file.nameE:/var/log/spring_log.log 则该日志文件的路径为E:/var/log日志文件的名字是spring_log.log 2logging.file.path可以指定日志文件的路径而不能指定名字 示例 logging.file.pathE:/var/log 则该日志文件的路径为E:/var/log日志文件的名字是默认的spring.log 3logging.file.name和logging.file.path不能同时生效 在配置了两者的情况下以logging.file.name为准。 来源《Spring Boot 从入门到实战》学习笔记