logback 速查上手
下面给出一份“logback 速查手册”从“零配置能跑”到“线上调优”一条线捋清复制即可用。一、logback 是什么作者log4j 创始人 Ceki Gülcü 的“亲儿子”SLF4J 默认实现。特点速度更快、内存占用更低、XML/Groovy 双配置、SiftingAppender多租户/多文件自动分离、自动热加载。二、零依赖就能跑Spring Boot 已内置!-- 实际不用再引spring-boot-starter-web 已传递 -- dependency groupIdch.qos.logback/groupId artifactIdlogback-classic/artifactId /dependency代码里private static final Logger log LoggerFactory.getLogger(UserService.class); log.info(order {} paid, orderId);三、核心三件套Logger写日志 → Appender写到哪 → Encoder/Layout怎么格式化四、最常用配置文件src/main/resources/logback-spring.xmlSpringBoot 专用?xml version1.0 encodingUTF-8? configuration scantrue scanPeriod30 seconds !-- 30s热加载 -- springProfile namedev,test !-- 开发/测试环境彩色控制台 -- appender nameCONSOLE classch.qos.logback.core.ConsoleAppender encoder classch.qos.logback.classic.encoder.PatternLayoutEncoder pattern%cyan(%d{HH:mm:ss.SSS}) %highlight(%-5level) %magenta([%thread]) %yellow(%logger{36}:%line) - %msg%n/pattern charsetUTF-8/charset /encoder /appender root levelINFO appender-ref refCONSOLE/ /root /springProfile springProfile nameprod !-- 生产只按大小/日期滚动文件 -- property nameLOG_HOME value/var/log/app/ appender nameFILE classch.qos.logback.core.rolling.RollingFileAppender file${LOG_HOME}/business.log/file rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy fileNamePattern${LOG_HOME}/business.%d{yyyy-MM-dd}.%i.log.gz/fileNamePattern maxFileSize200MB/maxFileSize maxHistory30/maxHistory totalSizeCap20GB/totalSizeCap /rollingPolicy encoder pattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}:%line - %msg%n/pattern charsetUTF-8/charset /encoder /appender !-- 异步提升性能丢日志0.01%可接受 -- appender nameASYNC classch.qos.logback.classic.AsyncAppender appender-ref refFILE/ queueSize2048/queueSize discardingThreshold0/discardingThreshold includeCallerDatafalse/includeCallerData /appender root levelINFO appender-ref refASYNC/ /root /springProfile !-- 单独给 error 再写一份方便告警 -- appender nameERROR classch.qos.logback.core.rolling.RollingFileAppender file${LOG_HOME:-./logs}/error.log/file filter classch.qos.logback.classic.filter.LevelFilter levelERROR/level onMatchACCEPT/onMatch onMismatchDENY/onMismatch /filter rollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy fileNamePattern${LOG_HOME:-./logs}/error.%d{yyyy-MM-dd}.log.gz/fileNamePattern maxHistory15/maxHistory /rollingPolicy encoder pattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{36}:%line - %msg%n/pattern /encoder /appender root levelINFO appender-ref refERROR/ /root /configuration要点文件名必须是 logback-spring.xml 才能用 springProfile 动态区分环境否则启动报错。scantrue 修改配置后 30 秒自动生效无需重启。AsyncAppender 队列满时会丢弃 TRACE/DEBUGINFO 以上不丢discardingThreshold0。五、多租户/多文件自动分离SiftingAppender 实战appender nameSIFT classch.qos.logback.classic.sift.SiftingAppender discriminator keytenantId/key defaultValuedefault/defaultValue /discriminator sift appender classch.qos.logback.core.rolling.RollingFileAppender file/var/log/app/${tenantId}.log/file rollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy fileNamePattern/var/log/app/${tenantId}.%d{yyyy-MM-dd}.log.gz/fileNamePattern maxHistory15/maxHistory /rollingPolicy encoder pattern%d{HH:mm:ss.SSS} [%thread] %level %logger{36} - %msg%n/pattern /encoder /appender /sift /appender代码里放 discriminatorMDC.put(tenantId, TenantContext.get());即可按租户自动拆文件再也不用 if-else 新建 logger。六、线上调优 checklist关闭 debug 级别logger namecom.alibaba.nacos levelWARN/关闭 includeCallerDataAsyncAppender 里拿行号会慢 5~10 倍。使用 SizeAndTimeBasedRollingPolicy 而非 FixedWindowRollingPolicy大并发下减少重命名竞争。磁盘独立日志盘与业务盘分离避免 java.io.IOException: No space left on device 把应用拖死。监控文件句柄数 /proc/sys/fs/file-max日志写入延迟appender.getQueueSize() / appender.getDiscardingCount()接入 Prometheus通过 logback-metrics 暴露 logback_events_total{levelerror} 做告警。七、常见坑现象原因快速 fix修改 logback.xml 不生效文件名写成 logback.xml 却被 spring 提前加载改名 logback-spring.xml控制台彩色失效Windows 老版本 ANSI 不支持加 jansi 依赖或关闭彩色启动报 “no applicable action for [springProfile]”用了普通 logback.xml换 logback-spring.xml日志文件中文乱码没有 charsetUTF-8/charset全部 encoder 加 charset一张图记忆 Logger → 级别开关 ↓ Appender → 写控制台文件ES ↓ Encoder → 长啥样JSON? pattern? ↓ RollingPolicy → 多大切割保留几天把上面模板直接粘进项目30 秒内就能拥有“彩色控制台 大小时间滚动 异步写盘 ERROR 单独文件”的标配日志再按环境切 profile线上稳得一批。祝排错愉快

相关新闻

更弱智的算法学习 day59

更弱智的算法学习 day59

Dijkstra算法的堆优化版本是针对其朴素算法效率不足的改进,特别适用于稀疏图​(边数远小于顶点数平方的图)。下面我将从算法思想和代码实现两方面进行解释。 算法思想 Dijkstra算法用于求解单源最短路径问题,即从给定的起点出发…

2026/7/3 15:08:01 阅读更多 →
探索整流器与逆变器的协同应用:从原理到实践

探索整流器与逆变器的协同应用:从原理到实践

整流器逆变器。 前级采用PWM整流器,采用双闭环前馈解耦控制,实现并网单位功率因数,稳定直流电压。 后级采用两电平逆变器,通过双闭环前馈解耦控制,稳定输出电压。 整个仿真环境完全离散化,运行时间更快&…

2026/7/3 15:08:03 阅读更多 →
永磁同步模型中的电流预测控制与广义预测控制(速度环)探索

永磁同步模型中的电流预测控制与广义预测控制(速度环)探索

永磁同步模型电流预测控制广义预测控制(速度环) 速度环预测控制采用广义预测与扩展状态观测器结合,提高系统鲁棒性和稳态特性。 电流环采用预测控制双矢量改进算法。 含有对应学习文献 在永磁同步电机(PMSM)控制系统中&#xff0c…

2026/7/3 15:08:05 阅读更多 →

最新新闻

我第一次用 Codex,差点把桌面交给它

我第一次用 Codex,差点把桌面交给它

CODEX 第三期 写在前面 这不是一篇炫技教程。它只解决小白第一次用 Codex 时最容易忽略的一件事:不要急着把桌面、客户资料和真实项目交给 AI,先用一个安全小文件夹跑通入门闭环。 我第一次打开 Codex 的时候,差点犯一个很蠢的错误。 不是装错版本,也不是登录失败。 而…

2026/7/5 13:20:08 阅读更多 →
AI写专著全流程解析,利用工具轻松打造20万字专业专著!

AI写专著全流程解析,利用工具轻松打造20万字专业专著!

对于很多研究者来说,写学术专著时最让人头疼的,莫过于“有限的时间”与“无限的需求”之间的矛盾。撰写专著通常需要数年时间,而研究者还要兼顾教学、科研、学术交流等各种任务,能够专心写作的时间往往是零散的。这种零碎的写作方…

2026/7/5 13:20:08 阅读更多 →
《唤醒你的AI同事:WorkBuddy从零上手》037:附录B 快捷键一览

《唤醒你的AI同事:WorkBuddy从零上手》037:附录B 快捷键一览

本文是《唤醒你的 AI 同事——WorkBuddy 从零上手》系列 第 37 篇。 回顾总结:通过第 036 篇附录 A,我们整理了 WorkBuddy 最实用的指令模板——从报告撰写、合同审查到数据分析、代码生成等 10+ 个场景。你现在已经拥有了即拿即用的"武器库"。但光有模板还不够,手…

2026/7/5 13:20:08 阅读更多 →
零日漏洞攻防实战:从检测到响应的纵深防御体系构建

零日漏洞攻防实战:从检测到响应的纵深防御体系构建

1. 项目概述:直面数字世界的“隐形杀手”在网络安全这个没有硝烟的战场上,最让防御者感到棘手的,往往不是那些已知的、有补丁可循的威胁,而是那些被称为“零日漏洞”的未知攻击。从业十几年,我处理过无数次安全事件&am…

2026/7/5 13:16:07 阅读更多 →
多人聊天室

多人聊天室

一、项目简介本项目是一个基于Java Swing MySQL的博客文章管理系统,实现了文章发布、分类管理、用户登录、全局搜索等核心功能。 我在项目中主要负责全局搜索模块、数据库读写层设计以及部分面向对象架构设计工作。二、个人任务简述序号完成功能与任务描述1全局搜索…

2026/7/5 13:14:06 阅读更多 →
骑乘无忧怎么选 (新手女生小个子巡航摩托)选购要点

骑乘无忧怎么选 (新手女生小个子巡航摩托)选购要点

入手自动挡巡航摩托,CVT 和 AMT 该怎么选?面向入门骑手、女性车友以及身高娇小的人群,最优方案已然明确。AMT 巡航操控顺手、动力充沛、使用便捷,外观也十分出彩,是综合实力更强的选择。QJMOTOR 闪 300AMT 与闪 400AMT…

2026/7/5 13:14:06 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻