Logback 日志框架总结:从入门到实战
1. 什么是 LogbackLogback 是 Java 社区最流行的日志框架之一由 Log4j 创始人 Ceki Gülcü 设计是 Log4j 的升级替代品。它天然集成 SLF4JSimple Logging Facade for Java性能更高、配置更灵活、功能更丰富。简单来说Logback 帮你回答三个问题谁在记录—— Logger日志记录器输出到哪里—— Appender输出目的地什么格式输出—— Layout / Encoder输出格式2. 快速上手Maven 依赖在pom.xml中添加以下依赖dependency groupIdch.qos.logback/groupId artifactIdlogback-classic/artifactId version1.4.14/version /dependency添加后Logback 会自动引入logback-core和slf4j-api无需额外配置即可使用。3. 第一个示例零配置跑起来Logback 遵循约定优于配置原则。即使没有logback.xml它也会使用默认配置输出到控制台日志级别为 DEBUG。import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class HelloLogback { // 获取 Logger 实例参数为当前类 private static final Logger log LoggerFactory.getLogger(HelloLogback.class); public static void main(String[] args) { log.trace(这是 TRACE 级别); log.debug(这是 DEBUG 级别); log.info(这是 INFO 级别); log.warn(这是 WARN 级别); log.error(这是 ERROR 级别); } }运行后控制台会输出类似14:32:10.123 [main] DEBUG HelloLogback - 这是 DEBUG 级别 14:32:10.125 [main] INFO HelloLogback - 这是 INFO 级别 14:32:10.125 [main] WARN HelloLogback - 这是 WARN 级别 14:32:10.125 [main] ERROR HelloLogback - 这是 ERROR 级别注意TRACE级别默认不输出因为默认级别是 DEBUG。4. 核心概念详解4.1 Logger日志记录器Logger 是开发者直接使用的 API。它按名称分层通常以类的全限定名命名Logger log LoggerFactory.getLogger(com.example.MyService);Logger 有继承关系com.example.MyService的父 Logger 是com.example根 Logger 是ROOT。子 Logger 如果没有设置级别会继承父 Logger 的级别。4.2 日志级别Logback 定义了 5 个级别优先级从低到高级别用途生产环境建议TRACE最细粒度的调试信息关闭DEBUG开发调试信息关闭INFO关键运行状态开启WARN潜在问题警告开启ERROR错误和异常开启只有级别大于等于 Logger 有效级别的日志才会输出。例如 Logger 级别为 INFO则 TRACE 和 DEBUG 被过滤。4.3 Appender输出目的地Appender 决定日志写到哪里。常见 Appender 有ConsoleAppender输出到控制台FileAppender输出到文件RollingFileAppender按时间或大小滚动文件4.4 Layout / Encoder输出格式Layout 控制日志的文本格式。Logback 推荐使用PatternLayoutEncoder通过%d、%level、%logger、%msg等占位符自定义格式。5. 配置文件详解logback.xml将logback.xml放在src/main/resources下Logback 会自动加载。下面是一个完整的实战配置?xml version1.0 encodingUTF-8? configuration !-- 定义变量方便统一管理 -- property nameLOG_HOME value/var/log/myapp / property nameLOG_PATTERN value%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n / !-- 控制台输出 -- appender nameCONSOLE classch.qos.logback.core.ConsoleAppender encoder pattern${LOG_PATTERN}/pattern /encoder /appender !-- 按天滚动的文件输出 -- appender nameFILE classch.qos.logback.core.rolling.RollingFileAppender file${LOG_HOME}/app.log/file rollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy fileNamePattern${LOG_HOME}/app.%d{yyyy-MM-dd}.log/fileNamePattern maxHistory30/maxHistory /rollingPolicy encoder pattern${LOG_PATTERN}/pattern /encoder /appender !-- 根 Logger 配置 -- root levelINFO appender-ref refCONSOLE / appender-ref refFILE / /root !-- 对特定包设置不同级别 -- logger namecom.example.dao levelDEBUG / logger nameorg.springframework levelWARN / /configuration配置说明property定义变量避免硬编码appender定义输出目的地可以定义多个root根 Logger所有 Logger 的最终父级logger对特定包或类单独设置级别rollingPolicy滚动策略这里按天滚动保留 30 天6. 实战在 Spring Boot 中使用 LogbackSpring Boot 默认使用 Logback只需在application.yml中简单配置即可logging: level: root: INFO com.example.myapp: DEBUG file: name: logs/myapp.log pattern: console: %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n如果需要更复杂的配置如按天滚动仍然使用logback-spring.xmlSpring Boot 推荐命名支持springProfile标签区分环境!-- 开发环境输出 DEBUG -- springProfile namedev root levelDEBUG appender-ref refCONSOLE / /root /springProfile !-- 生产环境只输出 INFO 以上到文件 -- springProfile nameprod root levelINFO appender-ref refFILE / /root /springProfile7. 常见问题与最佳实践7.1 日志性能优化Logback 内部使用异步 Appender 避免日志 I/O 阻塞业务线程appender nameASYNC_FILE classch.qos.logback.classic.AsyncAppender appender-ref refFILE / queueSize512/queueSize discardingThreshold0/discardingThreshold /appender7.2 避免字符串拼接推荐使用占位符{}避免不必要的字符串拼接// 不推荐 log.debug(User id: userId , name: name); // 推荐 log.debug(User id: {}, name: {}, userId, name);当日志级别不满足时占位符方式不会执行字符串拼接性能更好。7.3 不要记录敏感信息避免在日志中输出密码、身份证号、银行卡号等敏感信息。如果必须记录请先脱敏。8. 总结Logback 是 Java 生态中成熟、高效的日志框架核心要点如下三要素Logger谁记录、Appender输出到哪、Layout/Encoder什么格式配置文件logback.xml放在 classpath 根目录支持变量和滚动策略级别控制TRACE DEBUG INFO WARN ERROR生产环境建议 INFO 以上性能建议使用异步 Appender 占位符{}避免字符串拼接Spring Boot 集成开箱即用推荐logback-spring.xml配合springProfile

相关新闻

打造离散步骤进度条:@rc-component/progress steps属性完全攻略

打造离散步骤进度条:@rc-component/progress steps属性完全攻略

打造离散步骤进度条:rc-component/progress steps属性完全攻略 【免费下载链接】progress React Progress Bar 项目地址: https://gitcode.com/gh_mirrors/prog/progress 在React项目开发中,进度条是提升用户体验的重要组件。本文将全面解析rc-co…

2026/7/27 22:19:40阅读更多 →
HyperparameterHunter核心组件详解:打造高效超参数优化流程

HyperparameterHunter核心组件详解:打造高效超参数优化流程

HyperparameterHunter核心组件详解:打造高效超参数优化流程 【免费下载链接】hyperparameter_hunter Easy hyperparameter optimization and automatic result saving across machine learning algorithms and libraries 项目地址: https://gitcode.com/gh_mirror…

2026/7/27 22:19:40阅读更多 →
从评估板到实战:深度拆解bq77905电池保护方案

从评估板到实战:深度拆解bq77905电池保护方案

1. 从评估板到实战:深度拆解bq77905电池保护方案如果你正在设计一个3到5节串联的锂离子电池组,并且正在为如何实现一套可靠、低功耗且易于集成的保护电路而头疼,那么德州仪器(TI)的bq77905评估模块(EVM&…

2026/7/27 22:17:40阅读更多 →
SSM计算机毕设之 基于 SSM 的美容门店库存与收银管理系统智慧美业门店数字化运营管理系统(完整前后端代码+说明文档+LW,调试定制等)

SSM计算机毕设之 基于 SSM 的美容门店库存与收银管理系统智慧美业门店数字化运营管理系统(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 23:21:46阅读更多 →
Kali Linux下使用John the Ripper破解Office与压缩文件密码实战

Kali Linux下使用John the Ripper破解Office与压缩文件密码实战

1. 项目概述:为什么我们需要了解密码恢复技术在信息安全领域,密码恢复(Password Recovery)或密码破解(Password Cracking)是一个既敏感又极具实用价值的话题。我从事网络安全工作多年,经常遇到同…

2026/7/27 23:21:46阅读更多 →
Kali Linux中dsniff/arpspoof安装失败排查与解决方案全指南

Kali Linux中dsniff/arpspoof安装失败排查与解决方案全指南

1. 项目概述:当arpspoof在Kali Linux中“消失”时如果你正在学习网络安全,特别是网络渗透测试中的中间人攻击(MITM)技术,那么arpspoof这个工具对你来说一定不陌生。它作为经典的ARP欺骗工具,是dsniff套件中…

2026/7/27 23:21:46阅读更多 →
详解 Kafka 核心架构(核心流程):分区分布、消息路由与消费分配原理(三)

详解 Kafka 核心架构(核心流程):分区分布、消息路由与消费分配原理(三)

最近在总结Kafka的核心流程,对于生产者如何选择分区、分区在集群中如何摆放、消费者组又如何分配分区等问题容易混淆。这篇文章把Kafka的Topic、分区、生产者路由、集群分布以及消费者组机制彻底讲清楚。 一、Topic:只是逻辑上的“频道” 在Kafka中&…

2026/7/27 23:21:46阅读更多 →
TI DSP/BIOS渐进式集成:从裸机到实时系统的平滑升级实战

TI DSP/BIOS渐进式集成:从裸机到实时系统的平滑升级实战

1. 项目概述与核心价值 在嵌入式DSP开发领域,尤其是处理音频、通信或控制这类强实时性任务时,一个常见的困境是:项目初期为了快速验证算法和功能,往往采用一个简单的“超级循环”(Super Loop)架构。这种架构…

2026/7/27 23:21:46阅读更多 →
从迪士尼主题公园到开源社区:Open Duck Mini v2 双足机器人的技术全貌

从迪士尼主题公园到开源社区:Open Duck Mini v2 双足机器人的技术全貌

0. 引言 2023 年底,迪士尼主题公园内出现了一批令人瞩目的小型双足机器人——BDX 系列。这些身高不足半米的角色机器人能够在不平坦的地面上自主行走,通过肢体语言与游客互动,展现出惊人的动态平衡能力。迪士尼研究院随后发表了题为"De…

2026/7/27 23:19:45阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/27 1:14:34阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/27 1:14:52阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/27 1:14:56阅读更多 →
SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

1. 项目概述:从寄存器手册到实战指南 如果你手头有一份类似德州仪器(TI)TMS320x240xA系列DSP的SPI模块技术手册,看着里面密密麻麻的寄存器位定义、时序图和公式,是不是感觉头大?这份资料虽然权威&#xff0…

2026/7/27 0:00:24阅读更多 →
【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:24阅读更多 →
2007-2023年各市区县生态文明建设示范区DID

2007-2023年各市区县生态文明建设示范区DID

数据简介 自改革开放以来,我国依赖高投入、高资源消耗和高污染等传统发展模式实现了经济短期内的快速增长, 然而这也导致了严重的生态环境危机。因此,国家有力于推动企业高质量经济发展,协同生态保护的方针,从而从201…

2026/7/27 0:00:24阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/27 16:57:54阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/26 19:05:21阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/26 19:05:21阅读更多 →