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

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.xdnf.cn/news/18355.html

相关文章:

  • 车载 GPS 与手机导航的终极对决:谁在复杂路况下更胜一筹?
  • UE5 将纯蓝图项目转为 C++ 项目
  • MongoDB 完整指南
  • 安全运维过程文档体系规范
  • 如何轻松永久删除 Android 手机上的短信
  • Android音频学习(十四)——加载音频设备
  • 什么是Jmeter?Jmeter使用的原理步骤是什么?
  • day38-HTTP
  • 第41周——人脸图像生成
  • 携程旅游的 AI 网关落地实践
  • 计算机网络技术-第七章
  • Ingress控制器深度解析:Nginx与Traefik实战指南
  • Java的运行时数据区
  • ICMP 协议分析
  • 从零到一:RAGFlow 本地部署全攻略
  • JeeSite V5.13.0 发布,升级 Spring Boot 3.5,Cloud 2025,AI 1.0,Vite 7
  • 数据结构-HashMap
  • Vue2+Vue3前端开发_Day5
  • 【neo4j】安装使用教程
  • lesson44:Redis 数据库全解析:从数据类型到高级应用
  • 计算机网络:网络基础、TCP编程
  • 如何自定义一个SpringBoot Starter
  • 密码管理中明文密码与空密码的危害与预防
  • 继承(Inheritance)
  • 机器学习集成算法与K-means聚类
  • Pytest 插件怎么写:从0开发一个你自己的插件
  • 14. 多线程(进阶1) --- 常见的锁策略和锁的特性
  • 【Protues仿真】基于AT89C52单片机的数码管驱动事例
  • Windows下,将本地视频转化成rtsp推流的方法
  • strcasecmp函数详解