logback-spring.xml文件的一些记录
1、 前言在SpringBoot项目开发的过程中一般都是使用Slf4j作为日志门面使用logback作为日志实现。logback日志实现框架需要指定并配置一个配置文件logback-spring.xml2、一些记录logback-spring.xml 配置文件内容以及一些针对配置项的说明都在里面。?xml version1.0 encodingUTF-8? configuration scantrue scanPeriod10 seconds debugfalse !-- 日志级别从低到高分为TRACE DEBUG INFO WARN ERROR FATAL如果设置为WARN则低于WARN的信息都不会输出 -- !-- scan:当此属性设置为true时配置文件如果发生改变将会被重新加载默认值为true -- !-- scanPeriod:设置监测配置文件是否有修改的时间间隔如果没有给出时间单位默认单位是毫秒。当scan为true时此属性生效。默认的时间间隔为1分钟。 -- !-- debug:当此属性设置为true时将打印出logback内部日志信息实时查看logback运行状态。默认值为false。 -- contextNamelogback/contextName !-- name的值是变量的名称value的值是变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后可以使“${}”来使用变量。 -- !-- property namelog.path valueD:/file/logs/crypto/ -- property namelog.path valuelogs/ !-- 彩色日志 -- !-- 配置格式变量CONSOLE_LOG_PATTERN 彩色日志格式 -- !-- magenta:洋红 -- !-- boldMagenta:粗红-- !-- cyan:青色 -- !-- white:白色 -- !-- magenta:洋红 -- !-- %date 时间 -- !-- %-5level 日志级别从左显示5个字符宽度 -- !-- %thread 线程名称-- !-- %file:%line 文件名:行号 -- !-- %logger 日志名字 一般采用日志所在类名或者包名做日志名 -- !-- %msg 日志正文信息 -- !-- %n 换行 -- property nameCONSOLE_LOG_PATTERN value%yellow(%date{yyyy-MM-dd HH:mm:ss}) |%highlight(%-5level) |${PID:-} |%blue(%thread) |%blue(%file:%line) |%green(%logger) |%cyan(%msg%n)/ !--输出到控制台-- appender nameCONSOLE classch.qos.logback.core.ConsoleAppender !--此日志appender是为开发使用只配置最低级别控制台输出的日志级别是大于或等于此级别的日志信息-- !-- 例如如果此处配置了INFO级别则后面其他位置即使配置了DEBUG级别的日志也不会被输出 -- filter classch.qos.logback.classic.filter.ThresholdFilter levelDEBUG/level /filter encoder classch.qos.logback.classic.encoder.PatternLayoutEncoder Pattern${CONSOLE_LOG_PATTERN}/Pattern !-- 设置字符集 -- charsetUTF-8/charset /encoder /appender !--输出到文件-- !-- 时间滚动输出 level为 DEBUG 的日志 -- appender nameDEBUG_FILE classch.qos.logback.core.rolling.RollingFileAppender !-- 日志文件的路径和文件名称 -- file${log.path}/log_debug.log/file !--DEBUG级别日志文件的输出格式-- encoder classch.qos.logback.classic.encoder.PatternLayoutEncoder pattern%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} - [%thread] - %file:%line - %logger --- %msg%n/pattern charsetUTF-8/charset /encoder !-- 日志记录器的滚动策略按日期按大小记录 -- rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy !-- 每天日志归档路径以及格式 -- fileNamePattern${log.path}/debug/log-debug-%d{yyyy-MM-dd}.%i.log/fileNamePattern !-- 每个日志文件的最大大小 -- maxFileSize100MB/maxFileSize !--日志文件保留天数-- maxHistory180/maxHistory /rollingPolicy !-- 此日志文件只记录debug级别的 -- filter classch.qos.logback.classic.filter.LevelFilter levelDEBUG/level onMatchACCEPT/onMatch onMismatchDENY/onMismatch /filter /appender !-- 时间滚动输出 level为 INFO 的日志 -- appender nameINFO_FILE classch.qos.logback.core.rolling.RollingFileAppender !-- 日志文件的路径和文件名称 -- file${log.path}/log_info.log/file !--INFO级别日志文件的输出格式-- encoder classch.qos.logback.classic.encoder.PatternLayoutEncoder pattern%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} - [%thread] - %file:%line - %logger --- %msg%n/pattern charsetUTF-8/charset /encoder !-- 日志记录器的滚动策略按日期按大小记录 -- rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy !-- 每天日志归档路径以及格式 -- fileNamePattern${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log/fileNamePattern !-- 每个日志文件的最大大小 -- maxFileSize100MB/maxFileSize !--日志文件保留天数-- maxHistory180/maxHistory /rollingPolicy !-- 此日志文件只记录info级别的 -- filter classch.qos.logback.classic.filter.LevelFilter levelINFO/level onMatchACCEPT/onMatch onMismatchDENY/onMismatch /filter /appender !-- 时间滚动输出 level为 WARN 日志 -- appender nameWARN_FILE classch.qos.logback.core.rolling.RollingFileAppender !-- 正在记录的日志文件的路径及文件名 -- file${log.path}/log_warn.log/file !--日志文件输出格式-- encoder pattern%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} - [%thread] - %file:%line - %logger --- %msg%n/pattern charsetUTF-8/charset /encoder !-- 日志记录器的滚动策略按日期按大小记录 -- rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy fileNamePattern${log.path}/warn/log-warn-%d{yyyy-MM-dd}.%i.log/fileNamePattern !-- 每个日志文件的最大大小 -- maxFileSize100MB/maxFileSize !--日志文件保留天数-- maxHistory180/maxHistory /rollingPolicy !-- 此日志文件只记录warn级别的 -- filter classch.qos.logback.classic.filter.LevelFilter levelwarn/level onMatchACCEPT/onMatch onMismatchDENY/onMismatch /filter /appender !-- 时间滚动输出 level为 ERROR 日志 -- appender nameERROR_FILE classch.qos.logback.core.rolling.RollingFileAppender !-- 正在记录的日志文件的路径及文件名 -- file${log.path}/log_error.log/file !--日志文件输出格式-- encoder pattern%msg%n/pattern charsetUTF-8/charset /encoder !-- 日志记录器的滚动策略按日期按大小记录 -- rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy fileNamePattern${log.path}/error/log-error-%d{yyyy-MM-dd}.%i.log/fileNamePattern !-- 每个日志文件的最大大小 -- maxFileSize100MB/maxFileSize !--日志文件保留天数-- maxHistory180/maxHistory /rollingPolicy !-- 此日志文件只记录ERROR级别的 -- filter classch.qos.logback.classic.filter.LevelFilter levelERROR/level onMatchACCEPT/onMatch onMismatchDENY/onMismatch /filter /appender !-- 把所有日志记录到同一个文件中 (1) 根据配置的日志级别进行记录日志,如root标签配置的日志级别是INFO, 则会把INFO, WARN, ERROR 这三个级别的日志都记录到同一个文件中; (2) 这样做的目的是上面的 DEBUG_FILE、INFO_FILE、WARN_FILE和ERROR_FILE分别是只记录DEBUG级别、INFO级别、WARN级别和ERROR级别的日志 大白话就是上述的日志文件中只会出现本级别的日志信息而不会出现其他级别的日志信息。 这就导致一个问题是日志信息被割裂开了不连续了。 所以如果想要一个完整的日志即所有需要的级别的日志都记录到同一个文件中那就使用如下 ALL_FILE 这个配置项;如果不需要这么做就想把每个级别 的日志单独记录到不同的文件中就不需要开启这个。 -- appender nameALL_FILE classch.qos.logback.core.rolling.RollingFileAppender !-- 日志文件的路径和文件名称 -- file${log.path}/log_all.log/file !--日志文件的输出格式-- encoder classch.qos.logback.classic.encoder.PatternLayoutEncoder pattern%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} - [%thread] - %file:%line - %logger --- %msg%n/pattern charsetUTF-8/charset /encoder !-- 日志记录器的滚动策略按日期按大小记录 -- rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy !-- 每天日志归档路径以及格式 -- fileNamePattern${log.path}/all/log-all-%d{yyyy-MM-dd}.%i.log/fileNamePattern !-- 每个日志文件的最大大小 -- maxFileSize100MB/maxFileSize !--日志文件保留天数-- maxHistory180/maxHistory /rollingPolicy /appender !-- (一) 此处的 levelINFO 控制着全局的异常记录级别。打个比喻如下 1) 此处的root就好比一个大哥控制着整个项目的日志级别大哥在这里说了我现在把你们都开启!(即使用appender-ref 标签开启了 控制台、debug级别的日志文件、info级别的日志文件、warn级别的日志文件、error级别的日志文件、全部级别的日志文件) 日志级别是 INFO! 在项目运行过程中你们各司其职去记录日志吧。 .... 项目开始运行了大家注意了! 2) 先来看 refCONSOLE 的干活逻辑老大开启的全局日志级别是INFO级别我自己配置的是我要在控制台输出DEBUG及以上级别的日志~ 现在老大开启了全局INFO级别的日志那DEBUG级别的日志我肯定是见不到了我只管在控制台输出INFO级别以上的日志就行啦~ 3) 然后来看看 refDEBUG_FILE 的干活逻辑: 我自己配置的是我只负责在log_debug.log 文件中记录 项目运行过程中的 debug 级别日志但是现在老大开启的全局日志级别是INFO级别所以肯定不会有debug级别的日志输出也就不会有debug级别的日志走到我这里来我没活可干~~~ 4) 再来看看 refINFO_FILE 的干活逻辑我自己配置的是我只负责在log_info.log 文件中记录 项目运行过程中的 info 级别日志但是现在老大开启的全局日志级别是INFO级别如果项目在运行过程中出现了info级别的日志我就要开始干活啦我可不管其他级别的日志比如 warnerror级别的日志我一概不关心! 对应配置如下 filter classch.qos.logback.classic.filter.LevelFilter levelINFO/level onMatchACCEPT/onMatch onMismatchDENY/onMismatch /filter 5) refWARN_FILE 和 refERROR_FILE 干活逻辑和 4) 是类似的。 6) 最后来看看 refALL_FILE 的干活逻辑只要项目运行过程中出现了老大开启的全局日志级别INFO 及以上的日志信息我都要在 log_all.log 文件中记录下来! (二) 老大虽然开启了全局的日志记录级别为 INFO. 但是作为下面的小弟也可以选择自己想要记录的哪个级别的日志信息。拿 控制台的输出举例。虽然 rootINFO, 但是如果 CONSOLE 配置如下 filter classch.qos.logback.classic.filter.ThresholdFilter levelERROR/level /filter 那当程序运行过程中出现了 INFO 级别或 WARN 级别的日志我也不会输出到控制台上!, 我只关心ERROR级别的日志即当有ERROR 级别的日志出现时我才会把ERROR级别的日志信息输出到控制台上。 (3) 如果老大哪天看某个小弟不顺眼就可以不开启他。比如今天老大看 CONSOLE 这个小弟不顺眼就把其给注释掉了那么就不会在控制台输出程序运行过程中的日志信息了。但是其他小弟还是按照 (一)中分析的干活逻辑卖命的干活。 -- root levelINFO appender-ref refCONSOLE/ appender-ref refDEBUG_FILE/ appender-ref refINFO_FILE/ appender-ref refWARN_FILE/ appender-ref refERROR_FILE/ appender-ref refALL_FILE/ /root /configuration

相关新闻

如何轻松保存全网小说?novel-downloader完整使用指南

如何轻松保存全网小说?novel-downloader完整使用指南

如何轻松保存全网小说?novel-downloader完整使用指南 【免费下载链接】novel-downloader 一个可扩展的通用型小说下载器。 项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader 你是否曾经遇到过这样的困扰:正在追更的小说突然从网站上…

2026/10/17 7:42:27 阅读更多 →
TinyViT模型大揭秘:5.4M参数如何实现高效图像分类?tiny_vit_5m_224.dist_in22k_ft_in1k完整指南

TinyViT模型大揭秘:5.4M参数如何实现高效图像分类?tiny_vit_5m_224.dist_in22k_ft_in1k完整指南

TinyViT模型大揭秘:5.4M参数如何实现高效图像分类?tiny_vit_5m_224.dist_in22k_ft_in1k完整指南 【免费下载链接】tiny_vit_5m_224.dist_in22k_ft_in1k 项目地址: https://ai.gitcode.com/hf_mirrors/timm/tiny_vit_5m_224.dist_in22k_ft_in1k T…

2026/10/17 14:59:05 阅读更多 →
抖音批量下载终极指南:5分钟搞定无水印视频,告别手动保存烦恼

抖音批量下载终极指南:5分钟搞定无水印视频,告别手动保存烦恼

抖音批量下载终极指南:5分钟搞定无水印视频,告别手动保存烦恼 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and brow…

2026/10/17 15:09:22 阅读更多 →

最新新闻

Agent 系统线上监控指标设计:Token 消耗速率、幻觉拦截率与工具调用延迟

Agent 系统线上监控指标设计:Token 消耗速率、幻觉拦截率与工具调用延迟

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 21:11:40 阅读更多 →
Layui2.5.6 + ThinkPHP6.0.2 权限管理后台搭建实战与避坑指南

Layui2.5.6 + ThinkPHP6.0.2 权限管理后台搭建实战与避坑指南

简介:这是一套基于 layui2.5.6 前端组件库与 ThinkPHP6.0.2 后端框架搭建的权限管理后台源码,面向需要快速构建企业级管理系统的 PHP 开发者,也适合初学者理解前后端协同开发流程。资源包共 1098 个文件,约 6.1MB,以 4…

2026/10/18 21:11:40 阅读更多 →
IntelliJ IDEA插件开发:文件、类、包选择器实战详解

IntelliJ IDEA插件开发:文件、类、包选择器实战详解

1. 项目概述与整体设计思路做插件做到 UI 这一层,大家遇到的第一道坎往往是“让用户选东西”。文件选择器、类选择器、包选择器,这三个东西光听名字就知道是干嘛的:弹一个原生对话框,让用户挑一个文件、挑一个 Java 类、挑一个包&…

2026/10/18 21:11:40 阅读更多 →
Claude Code knowledge-work-plugins 安装配置与实战指南

Claude Code knowledge-work-plugins 安装配置与实战指南

1. 从零认识 knowledge-work-plugins:它到底解决什么问题第一次看到knowledge-work-plugins这个仓库名,很多人会下意识以为它又是一个“插件市场”或者“扩展合集”。但真正翻过它的目录结构、跑过几个 slash commands 之后,你会发现它的定位…

2026/10/18 21:11:40 阅读更多 →
knowledge-work-plugins 插件体系:Claude Code 知识工作自动化实战

knowledge-work-plugins 插件体系:Claude Code 知识工作自动化实战

1. 从零认识 knowledge-work-plugins:它到底解决什么问题第一次看到knowledge-work-plugins这个仓库名,很多人会以为它又是一个“插件合集”,点进去才发现它其实是一套围绕知识工作场景设计的扩展体系。简单说,它把日常重复性的知…

2026/10/18 21:11:40 阅读更多 →
knowledge-work-plugins 实战:Claude Code 插件安装配置与知识工作自动化

knowledge-work-plugins 实战:Claude Code 插件安装配置与知识工作自动化

1. 从零认识 knowledge-work-plugins:它到底解决什么问题第一次看到knowledge-work-plugins这个仓库名,很多人会以为它又是一个“插件合集”,点进去才发现它其实是一套围绕知识工作场景设计的扩展体系。简单说,它把日常重复性的知…

2026/10/18 21:10:39 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →