Spring Boot 进阶-如何自定义SpringBoot日志配置?

news/2024/12/21 22:15:19/

在这里插入图片描述
  在之前的文章中我们介绍了Spring Boot中的日志框架,并且也介绍了SpringBoot日志框架中日志级别的调整。这篇文章我们主要来介绍关于如何让日志框架更加符合我们自己的需求。那么首先我们就来看一下日志文件输出路径的配置。

如何指定日志文件的输出位置

  在Spring Boot中日志是默认别输出到控制台的,但是这样的做法在测试生产环境显然是不可取的,所以我们就需要将日志输出到指定的路径中的指定文件中,这样既方便了我们查找问题,也方便我们利用日志来进行大数据分析等操作。

  在Spring Boot 日志模块配置中有两个配置非常重要,如下所示。

logging:level:com.example.demo: debugfile:path: ./logname: test.log

  其中我们指定了日志生效的级别,以及日志的路径和日志文件名。下面我们来测试一下。会看到运行项目之后,会在当前路径下创建一个test.log的文件,其中内容就是在控制台输出的日志内容。
在这里插入图片描述
  这里需要注意点,就是在官方文档中表述,path和name两个属性不能同时配置,否则只能生效一个或者是不生效。这里需要注意。例如上面的配置中我们看到对于path的配置实际上是没有生效的。

  当然在日志文件的相关配置中还有其他的一些属性配置,例如日志大小、日志保留天数等等,这个在下面我们会介绍到。

如何定制日志格式呢?

  在之前的文章中我们介绍了关于日志默认格式都有哪些内容,那么我们如何利用Spring Boot默认的日志配置来自定义自己的日志输出格式呢?

  这里有两个配置需要进行修改

logging:level:com.example.demo: debugfile:path: H:\demo\logname: test.logpattern:console: '%d{yyyy-MM-dd --- HH:mm:ss} [%thread] %-5level %logger -%msg%n'file: '%d{yyyy-MM-dd} [%thread] %-5level %logger -%msg%n'

  其中console是用来配置控制台日志的输出,而file是用来控制日志文件中日志格式,这里需要注意一点,就是再基于YML文件配置的时候,由于YML配置文件不支持SPEL表达式,所以需要将其用单引号引起来。

在这里插入图片描述
  如图所示,整个的日志格式都发生了变化。进行了对应的调整显示。这里我们来说明一下日志配置中各种配置项的含义

  • %d{HH:mm:ss SSS} 标识日志输出的时间
  • %thread 标识输出日志进程号,整个在异步多线程中会很有用
  • %-5level 标识日志级别,使用5个字符并且左对齐
  • %logger 输出日志的名称
  • %msg–日志消息内容
  • %n–日志换行符

使用不同的日志框架来实现自定义日志配置?

  在Spring Boot的官方文档中,对于不同的日志系统,指定了不同的日志配置文件的格式,只需要按照对应的日志配置文件进行配置,那么一定就可以被SpringBoot框架加载内容。

  • LogBack :支持 logback-spring.xml,logback-spring.groovy,logback.xml,logback.groovy。这里需要说明一下的是groovy有点类似于JVM,有兴趣的读者可以了解一下。
  • Log4j:支持log4j-spring.propreties,log4j-spring.xml,log4j.properties ,log4j.xml
  • Log4j2:支持log4j2-spring.xml,log4j2.xml
  • JDK :支持logging.properties

  在Spring Boot官方中推荐使用的是含有spring的文件名的配置。所以只需要在src/resource文件夹下创建logback-spring.xml文件就可以进行自定的配置了。注意,下面的配置只是用来演示,不推荐直接使用

<?xml version="1.0" encoding="UTF-8"?>
<configuration><!-- 日志存放路径 --><property name="log.path" value="/home/ruoyi/logs" /><!-- 日志输出格式 --><property name

http://www.ppmy.cn/news/1533770.html

相关文章

leetcode刷题day29|贪心算法Part03( 134. 加油站、135. 分发糖果、860.柠檬水找零、406.根据身高重建队列)

134. 加油站 思路&#xff1a; 暴力解法&#xff1a;for循环适合模拟从头到尾的遍历&#xff0c;while循环适合模拟环形遍历&#xff01;但是会超出leetcode的时间限制。 class Solution {public int canCompleteCircuit(int[] gas, int[] cost) {for(int i0;i<gas.length…

CMU 10423 Generative AI:lec13/13.5(text-to-image models:三大类方法、评估标准、图像编辑原理)

1 文章目录 1 lec13和lec13.5概述2 Text-to-Image Generation 概念、主要方法、挑战、发展历程1. **基本概念**2. **主要技术方法**2.1. **生成对抗网络&#xff08;GAN&#xff09;**2.2. **自回归模型&#xff08;Autoregressive Models&#xff09;**2.3. **扩散模型&#x…

opencv-如何获取图像区域特定像素区域大小

需求 通过鼠标框选某个区域&#xff0c;返回这个区域的像素大小。 源码 # e:path\to\cal_rectangle_area.py import cv2 import numpy as np # 初始化变量 image cv2.imread(./vlcsnap-2024-09-25-10h51m27s007.png) if image is None: print("Error: Image cou…

自建RustDesk服务器:详细步骤与操作指南

在远程办公和协作日益普及的今天&#xff0c;远程桌面软件成为了不可或缺的工具。然而&#xff0c;许多知名的远程桌面软件&#xff0c;在免费使用一段时间后&#xff0c;会通过限制连接数量、时长或在特定网络环境下的可用性来促使用户付费升级&#xff0c;而且其会员非常昂贵…

《蓝桥杯算法入门》(C/C++、Java、Python三个版本)24年10月出版

推荐&#xff1a;《算法竞赛》&#xff0c;算法竞赛大全书&#xff0c;网购&#xff1a;京东 天猫  当当 文章目录 《蓝桥杯算法入门》内容简介本书读者对象作者简介联系与交流《蓝桥杯算法入门 C/C》版目录 《蓝桥杯算法入门 Java》版目录 《蓝桥杯算法入门 Python》版目录 …

通信工程学习:什么是TFTP简单文件传输协议

TFTP&#xff1a;简单文件传输协议 TFTP&#xff08;Trivial File Transfer Protocol&#xff0c;简单文件传输协议&#xff09;是一种轻量级的文件传输协议&#xff0c;主要用于在计算机网络中传输小型文件。以下是对TFTP的详细解释&#xff1a; 一、TFTP简单文件传输协议的定…

OLED移植

一、在D盘中找到OLED文件包 二、新建一个HAL库工程 只需要配好RCC和SYS以及时钟树就可以&#xff0c;不开启任何引脚 三、移植文件 把文件放在Core->Src里面 四、在Kile5中添加文件 五、注意 &#xff08;1&#xff09;下载的时候要开启Rsset and Run 不然下载不进程序 &a…

django drf 统一Response格式

场景 需要将响应体按照格式规范返回给前端。 例如&#xff1a; 响应体中包含以下字段&#xff1a; {"result": true,"data": {},"code": 200,"message": "ok","request_id": "20cadfe4-51cd-42f6-af81-0…