logback-spring.xml 文件

一.概述

        这是一个日志文件,主要用来对应用程序的日志进行记录,并且可以配置日志的一些格式和规则。

二.读取机制

1.SpingBoot自动识别

       进行文件扫描时,当在 classpath 下发现名为 logback-spring.xml 的文件时,Spring Boot 会自动加载该配置。

2.加载时机

      在SpringBoot的早期阶段,早于Bean的初始化

3.配置文件优先级

Spring Boot 按以下顺序查找日志配置文件:

  • logback-spring.xml (推荐,支持 Spring Boot 特性)
  • logback-spring.groovy
  • logback.xml
  • logback.groovy

4.依赖条件

通常由 spring-boot-starter-web 自动引入,无需额外配置,Spring Boot 会自动完成初始化工作

三.主要作用

下面是一个项目的日志配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Logback 配置文件,用于配置日志输出规则。支持自动扫描配置变更、控制台输出、文件滚动记录以及异步日志处理。
-->
<configuration scan="true" scanPeriod="60 seconds" debug="false"><!-- 日志存储路径配置 --><property name="LOG_HOME" value="logs" /><!-- 标准日志输出格式定义 --><property name="STANDARD_LOG_PATTERN" value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ}|%p|%t|%c|%X{traceId}|%m%ex%n" /><!-- 控制台输出 Appender:将日志输出到控制台 --><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>${STANDARD_LOG_PATTERN}</pattern></encoder></appender><!-- ERROR 级别日志文件 Appender:- 输出 ERROR 级别的日志到 error.log 文件- 按日期和大小进行轮转压缩- 最大保留7天日志,总容量不超过20GB--><appender name="SF-ERROR-APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_HOME}/error.log</file><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_HOME}/error.log.%d{yyyy-MM-dd}.%i.gz</fileNamePattern><maxFileSize>200MB</maxFileSize><!-- 按天轮转,保留 7 天 --><maxHistory>7</maxHistory><!-- 最多存储 20 GB 的归档文件 --><totalSizeCap>20GB</totalSizeCap></rollingPolicy><encoder><pattern>${STANDARD_LOG_PATTERN}</pattern></encoder><!-- 只处理 ERROR 级别日志 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!-- 业务日志文件 Appender:- 输出 INFO/WARN 等非 ERROR 级别日志到 biz.log 文件- 同样支持按日期和大小轮转压缩- 最大保留7天日志,总容量不超过20GB--><appender name="SF-BIZ-APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_HOME}/biz.log</file><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_HOME}/biz.log.%d{yyyy-MM-dd}.%i.gz</fileNamePattern><maxFileSize>200MB</maxFileSize><maxHistory>7</maxHistory><totalSizeCap>20GB</totalSizeCap></rollingPolicy><encoder><pattern>${STANDARD_LOG_PATTERN}</pattern></encoder><!-- 排除 ERROR 级别日志 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>DENY</onMatch><onMismatch>ACCEPT</onMismatch></filter></appender><!-- 异步 ERROR 日志 Appender:- 包装 SF-ERROR-APPENDER 实现异步写入- 设置队列大小为1024,不丢弃任何日志--><appender name="SF-ERROR-ASYNC-APPENDER" class="ch.qos.logback.classic.AsyncAppender"><!-- 不丢失日志。默认的,如果队列的80%已满,则会丢弃TRACE、DEBUG、INFO级别的日志 --><discardingThreshold>0</discardingThreshold><!-- 更改默认的队列的深度,该值会影响性能。默认值为256 --><queueSize>1024</queueSize><appender-ref ref="SF-ERROR-APPENDER"/></appender><!-- 异步业务日志 Appender:- 包装 SF-BIZ-APPENDER 实现异步写入- 设置队列大小为1024,不丢弃任何日志--><appender name="SF-BIZ-ASYNC-APPENDER" class="ch.qos.logback.classic.AsyncAppender"><discardingThreshold>0</discardingThreshold><queueSize>1024</queueSize><appender-ref ref="SF-BIZ-APPENDER"/></appender><!-- 根日志级别设置为 info:- 控制台输出(生产环境应关闭)- 异步 ERROR 和 BIZ 日志输出--><root level="info"><!-- 生产环境必需关闭 CONSOLE --><appender-ref ref="CONSOLE"/><appender-ref ref="SF-ERROR-ASYNC-APPENDER"/><appender-ref ref="SF-BIZ-ASYNC-APPENDER"/></root></configuration>

1.配置文件根元素定义:

<configuration scan="true" scanPeriod="60 seconds" debug="false">

      启用了配置文件动态扫描功能,每60秒检查一次配置文件是否发生变化,如有变化会自动重新加载配置,debug='false'表示不会输出Logback自身的调试日志。

2.日志输出设置

  • 控制台输出: 用于开发调试阶段实时查看日志
  • 文件输出: 将日志持久化存储到文件系统
 <!-- 日志存储路径配置 --><property name="LOG_HOME" value="logs" /><!-- 标准日志输出格式定义 --><property name="STANDARD_LOG_PATTERN" value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ}|%p|%t|%c|%X{traceId}|%m%ex%n" /><!-- 控制台输出 Appender:将日志输出到控制台 --><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>${STANDARD_LOG_PATTERN}</pattern></encoder></appender>

3.分类存储

  • 错误日志: 仅记录 ERROR 级别日志到 error.log 文件
  • 业务日志: 记录除 ERROR 外的其他日志到 biz.log 文件

4.日志轮转策略

<!-- ERROR 级别日志文件 Appender:- 输出 ERROR 级别的日志到 error.log 文件- 按日期和大小进行轮转压缩- 最大保留7天日志,总容量不超过20GB--><appender name="SF-ERROR-APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_HOME}/error.log</file><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_HOME}/error.log.%d{yyyy-MM-dd}.%i.gz</fileNamePattern><maxFileSize>200MB</maxFileSize><!-- 按天轮转,保留 7 天 --><maxHistory>7</maxHistory><!-- 最多存储 20 GB 的归档文件 --><totalSizeCap>20GB</totalSizeCap></rollingPolicy><encoder><pattern>${STANDARD_LOG_PATTERN}</pattern></encoder>

5.性能优化

         使用异步策略去同步日志。

<!-- 异步 ERROR 日志 Appender:- 包装 SF-ERROR-APPENDER 实现异步写入- 设置队列大小为1024,不丢弃任何日志--><appender name="SF-ERROR-ASYNC-APPENDER" class="ch.qos.logback.classic.AsyncAppender"><!-- 不丢失日志。默认的,如果队列的80%已满,则会丢弃TRACE、DEBUG、INFO级别的日志 --><discardingThreshold>0</discardingThreshold><!-- 更改默认的队列的深度,该值会影响性能。默认值为256 --><queueSize>1024</queueSize><appender-ref ref="SF-ERROR-APPENDER"/></appender><!-- 异步业务日志 Appender:- 包装 SF-BIZ-APPENDER 实现异步写入- 设置队列大小为1024,不丢弃任何日志--><appender name="SF-BIZ-ASYNC-APPENDER" class="ch.qos.logback.classic.AsyncAppender"><discardingThreshold>0</discardingThreshold><queueSize>1024</queueSize><appender-ref ref="SF-BIZ-APPENDER"/></appender>

6.日志格式标准化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/920123.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/920123.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode Hot 100 第二天

1. 283 移动零 链接&#xff1a;题目链接 题解&#xff1a; 要求&#xff1a;时间复杂度 < O (n^2) 题解&#xff1a;将非零元素依次往前移&#xff08;占据0元素的位置&#xff09;&#xff0c;最后再将0元素填充至数组尾。时间复杂度O(n)&#xff0c;用一个指针x来维护非…

04-Maven工具介绍

文章目录1、Maven官网2、Maven的3个重要功能3、Maven安装3.1 安装教程的视频3.2 安装教程的文本1、Maven官网 https://maven.apache.org/ 2、Maven的3个重要功能 黑马程序员JavaWeb基础教程&#xff0c;Java web从入门到企业实战完整版 3、Maven安装 3.1 安装教程的视频 …

基于开源 AI 智能名片链动 2+1 模式 S2B2C 商城小程序的新开非连锁品牌店开业引流策略研究

摘要&#xff1a;本文聚焦于一家新开且地理位置优越、目标客户为周边“80 后”“90 后”上班族的非连锁品牌店。在明确店铺定位、完成店内设计与菜品规划等基础工作后&#xff0c;探讨如何在新店开业初期有效打响品牌、吸引目标客户。通过引入开源 AI 智能名片链动 21 模式 S2B…

UE5多人MOBA+GAS 54、用户登录和会话创建请求

文章目录创建主菜单需要的创建主菜单游戏模式创建主菜单游戏控制器创建主菜单界面UI实现登录游戏实例创建等待界面配置和获取协调器 URL撰写和发送会话创建请求创建主菜单需要的 创建主菜单游戏模式 MainMenuGameMode 创建主菜单游戏控制器 MainMenuPlayerController #p…

SCSS上传图片占位区域样式

_App.scss// 上传图片占位区域样式---------------------------------------- [theme"uploadImage"] {transition: 0.2s;position: relative;cursor: pointer;border-radius: 4px;/*居中填满*/background-repeat: no-repeat;background-position: center;background-…

Prometheus+Grafana监控mysql

1、简述 使用 Prometheus 结合 Grafana 监控 MySQL 是一套成熟且广泛应用的方案&#xff0c;能实现对 MySQL 性能、状态等指标的实时采集、存储、可视化及告警。 2、整体架构说明 Prometheus&#xff1a;负责定时从 MySQL 采集监控指标&#xff08;需借助 Exporter&#xff0…

网络流量分析——Tcpdump 数据包过滤

文章目录.PCAP 文件Tcpdump 数据包过滤过滤和高级语法选项有用的 TCPDump 过滤器主机过滤器源/目标过滤器使用源和端口作为过滤器将目标与网络过滤器结合使用协议过滤器 - 通用名称协议过滤器 - 编号端口过滤器端口范围过滤器小于/大于过滤器利用更大的AND 过滤器无滤镜的基本捕…

DeepSeek V3.1 横空出世:重新定义大语言模型的边界与可能

当大语言模型领域的竞争进入白热化阶段&#xff0c;一场静默的技术革命正在悄然酝酿。2025 年8月19日&#xff0c;DeepSeek 团队带着全新升级的 V3.1 版本强势登场&#xff0c;这个被业内称为 “智能体时代敲门砖” 的模型&#xff0c;究竟藏着多少颠覆认知的黑科技&#xff1f…

Unity Netcode for GameObjects(多人联机小Demo)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、安装 Netcode for GameObjects二、做个小Dome1.NetcodeManageNet2.创建UI3.创建预制体4.代码介绍UI代码随机位置代码总结前言 Netcode for GameObjects 是 …

Ant Design for UI 选择下拉框

1. 单选框 与多选框<template><div class"demo-page" style"padding: 40px; max-width: 1200px; margin: 0 auto; font-family: Microsoft YaHei, Arial, sans-serif;"><h1 style"color: #1890ff; text-align: center; margin-bottom…

动手学深度学习01-引言

动手学深度学习pytorch 参考地址&#xff1a;https://zh.d2l.ai/ 文章目录动手学深度学习pytorch1-第01章-引言1. 机器学习/深度学习基础1.1 什么是机器学习&#xff1f;1.2 深度学习与机器学习的关系&#xff1f;2. 数据&#xff08;Data&#xff09;2.1 什么是样本、特征、标…

大模型提示词工程背后的原理:深入理解Prompt Learning(提示学习)

“ 知其然也要知其所以然&#xff0c;为什么会有提示词工程&#xff1f;” 了解和使用过大模型的人应该都知道提示词工程&#xff0c;即使不了解提示词工程&#xff0c;至少也应该听说过&#xff0c;提示词工程说白了就是一种和大模型交流的方法&#xff0c;它的作用就是让大模…

AI 智能体安全设计模式:从三大“反模式”看如何构建可信的 AI 系统

摘要&#xff1a;当我们将 AI 智能体&#xff08;Agent&#xff09;从实验原型推向生产环境时&#xff0c;许多团队在不经意间重复着一些危险的错误实践。这些反复出现的错误&#xff0c;在软件工程中被称为“反模式”&#xff08;Anti-Patterns&#xff09;。本文基于 Curity …

【前端安全】前端安全第一课:防止 XSS 和 CSRF 攻击的常见手法

【前端安全】前端安全第一课&#xff1a;防止 XSS 和 CSRF 攻击的常见手法 所属专栏&#xff1a; 《前端小技巧集合&#xff1a;让你的代码更优雅高效》 上一篇&#xff1a; 【性能指标】决战性能之巅&#xff1a;深入理解核心 Web 指标&#xff08;Core Web Vitals&#xff0…

QT新建文件或者项目解释:那些模板分别是什么意思?

在 Qt Creator 的 “New File or Project” 界面中&#xff0c;不同分类下的模板有着不同的用途和适用场景&#xff0c;以下是对各部分的详细说明&#xff1a;一、“项目” 分类下1. Application&#xff08;应用程序&#xff09;用途&#xff1a;用于创建可直接运行的应用程序…

《支付回调状态异常的溯源与架构级修复》

在后端开发领域&#xff0c;能通过错误日志直接定位的问题&#xff0c;只能算作“基础挑战”&#xff1b;而那些依赖特定数据量、并发量或外部交互场景才会触发的隐性问题&#xff0c;往往像藏在电路中的虚焊点&#xff0c;平时看似正常&#xff0c;关键时刻却会导致整个系统断…

C语言 运算符 (2)

一、内容概要内容提neirong关系运算符 逻辑运算符 逗号运算符 位运算二、运算符2.1 关系运算符说明&#xff1a; >,<,>,<,,! &#xff08;都是双目的&#xff09;所有关系运算符都是双目运算符&#xff08;二元运算符&#xff09;&#xff0c;运算符左侧和右侧、可…

mac版SVN客户端: macSvn 下载、使用指南【保姆级教程】

做项目要用SVN&#xff0c;在Mac平台找顺手的客户端好难。Windows下的TortoiseSVN很赞&#xff0c;Mac却一直没对等工具。直到发现新发布的MacSVN&#xff0c;布局和操作深得我心&#xff0c;内置常用工具&#xff0c;还能无缝集成到OS与任务栏&#xff0c;便捷易上手&#xff…

MongoDB分片集群自动化部署

OS&#xff1a;CentOS Linux release 7.9.2009 (Core) 场景&#xff1a; 需要半自动化或者自动化部署MongoDB集群时&#xff0c;可用此脚本。提高交付效率。 脚本实现架构图&#xff1a;脚本&#xff1a; check_clear_host.sh #此脚本有2个功能及是检查 资源规格和清理资源上的…

go-redis库使用总结

文章目录1. 概述与特性2. 安装与初始化2.1 安装2.2 初始化3 基本使用模式3.1 单实例客户端3.2 连接池与自动重连4. 常用 Redis 数据结构操作4.1 字符串&#xff08;String&#xff09;4.2 哈希&#xff08;Hash&#xff09;4.3 列表&#xff08;List&#xff09;4.4 集合&#…