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

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.dtcms.com/a/343830.html

相关文章:

  • jenkins实现分布式构建并自动发布到远程服务器上 jenkins实现自动打包编译发布远程服务器
  • 逆向代码笔记
  • 51单片机-驱动步进电机模块教程
  • 移动应用青少年模式开发成本解析:原生、Flutter与Uniapp方案对比-优雅草卓伊凡
  • Redis 数据类型:List 列表的深度解析与应用
  • Apache Ozone 2.0.0集群部署
  • 潇洒郎: Python实现检测鼠标移动和音视频播放行为——打造省电脚本
  • 反催收APP开发思路:用Flutter打造证据链管理工具
  • JVM 调优全流程案例:从频繁 Full GC 到百万 QPS 的实战蜕变
  • 无线数传模块实现实时信号传输,保障煤堆设备生产进度稳定
  • 【LeetCode每日一题】238. 除自身以外数组的乘积
  • 从零开始学习JavaWeb-15
  • 一、anaconda安装与测试运用
  • AlexNet读取数据集 与VGG-11网络
  • 字节Seed-OSS开源,不卷参数卷脑子
  • 防火墙双机热备
  • 【CV】OpenCV①——图形处理简介
  • C#_面向对象设计的艺术
  • [特殊字符] 高可用高并发微服务架构设计:Nginx 与 API Gateway 的协同实践
  • Oracle DB 10g 升级至 11.2.0.4报错-ORA-00132
  • 论文阅读:Do As I Can, Not As I Say: Grounding Language in Robotic Affordances
  • 大模型微调训练资源占用查询:Windows 10 查看 NVIDIA 显卡GPU状态教程(替代 Ubuntu 下 watch nvidia-smi)
  • 从零开始:C语言配置文件解析实战(二)—— 数据解析与键值获取
  • 相机曝光调节与自动曝光控制详解
  • 11、Informer论文笔记
  • 高通Camx相机dump yuv和raw图的抓取方式和查看
  • Linux 软件编程(九)网络编程:IP、端口与 UDP 套接字
  • Jmeter混合业务负载测试指南
  • 定制吹塑服务:塑料成型领域的“柔性制造”新范式
  • 计算机网络:TCP、UDP