【Java EE】Spring 日志详解
文章目录一、日志的作用二、SpringBoot日志底层架构三、两种打印日志方式3.1 原生SLF4J3.2 Lombok Slf4j四、日志级别五、application全局配置5.1 配置日志级别yml配置properties配置5.2 日志持久化5.3 日志自动分割5.4 自定义日志输出格式六、完整yml配置一、日志的作用线上问题定位排查程序崩溃、接口报错、请求超时需要依靠日志复现定位是开发排障第一工具。系统运行监控记录接口响应耗时、调用频次、异常数量对接监控平台设置阈值告警。业务数据采集分析日志记录用户浏览、点击、停留行为统计PV/UV给推荐算法提供原始数据支撑运营策略优化。安全操作审计记录用户/管理员增删改查操作、敏感信息查询记录。出现数据泄露、恶意删改时可通过日志追溯操作人、操作时间满足等保、行业监管规范。二、SpringBoot日志底层架构门面模式是一种设计模式也称为外观模式提供了一个统一的接口用来访问子系统的一群接口门面模式主要包含两种角色外观角色(Facade)也称为门面角色是系统对外的统一接口子系统角色SubSystem可以同时有一个或多个SubSystem对于子系统来说Facade只是一个客户端即Facade对SubSystem透明日志框架这种日志框架就是门面模式的典型体现SLF4J不是真正的日志实现而是一个抽象层对日志框架制定的一种标准这样业务代码不用对接底层日志实现只对接SLF4J门面。业务代码只依赖SLF4J统一API底层可自由切换Logback/Log4j2无需改动业务代码项目所有第三方组件统一使用一套日志配置。三、两种打印日志方式3.1 原生SLF4Jimportorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RestController;RestControllerpublicclassLoggerController{// 绑定当前类日志输出会携带类名方便定位privatestaticfinalLoggerloggerLoggerFactory.getLogger(LoggerController.class);GetMapping(/print)publicStringprintLog(){// 不同级别日志输出logger.trace(追踪日志);logger.debug(调试日志);logger.info(正常业务日志);logger.warn(警告日志);logger.error(错误日志);return日志打印完成;}}3.2 Lombok Slf4j每次手动创建Logger对象重复繁琐Lombok一键生成日志对象log。importlombok.extern.slf4j.Slf4j;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RestController;Slf4j// 自动生成 Logger log 对象RestControllerpublicclassLogController{GetMapping(/log)publicStringtestLog(){log.info(用户访问日志接口);log.error(模拟异常报错);returnlombok日志输出;}}注解封装了创建log的过程四、日志级别FATAL ERROR WARN INFO DEBUG TRACE级别越高输出日志越少配置基础级别后只会打印当前级别及更高优先级日志。Logback无FATAL自动映射为ERROR。级别使用场景FATAL系统致命故障服务不可用需管理员紧急处理ERROR程序报错、异常不阻断整体服务运行WARN潜在风险不影响业务但需要关注INFO正常业务流程、启动、请求记录SpringBoot默认级别DEBUG开发调试细节生产环境关闭TRACE超细粒度追踪极少使用除非特殊用意一般使用DEBUG代替SpringBoot默认日志级别INFO访问接口只会打印INFO/WARN/ERRORDEBUG、TRACE不会输出。五、application全局配置5.1 配置日志级别yml配置在logging.level.root中可以设置全局的日志级别表示在显示这个级别及以上的日志信息与root同级别可以指定某个目录日志级别logging:level:root:debug# 全局根级别所有包生效com.example.demo:trace# 指定业务包打印TRACE日志properties配置logging.level.rootdebug logging.level.com.example.demotrace5.2 日志持久化控制台中的日志重启就会丢失要想持久化的保存日志有两种配置方式指定完整文件名优先级更高logging:file:name:logs/demo.log# 相对路径项目根目录logs文件夹指定存储目录logging:file:path:D:/server/logs# 绝对路径内容都会被识别为路径文件名为spring.log注意即使服务器重启这个文件也不会丢失新日志会追加在之前的日志后面name和path同时配置仅name生效。5.3 日志自动分割日志文件持续写入会膨胀为了防止防止单文件超大SpringBoot默认10MB自动分割。可自定义阈值、归档格式logging:logback:rollingpolicy:max-file-size:200MB# 单文件最大容量企业常用200~500Mfile-name-pattern:${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz# 分割后文件名demo.log.2026-07-21.0.gz%d{yyyy-MM-dd}按日期归档%i同一天多文件自增索引.gz自动压缩历史日志节省磁盘5.4 自定义日志输出格式日志内置字段%d{yyyy-MM-dd HH:mm:ss.SSS}精确毫秒时间%5p日志级别%t线程名%logger{39}打印类名%m日志内容%n换行自定义控制台和文件logging:pattern:# 控制台彩色日志console:%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr([%t]){cyan} %-40logger : %m%n# 文件无彩色格式file:%d{yyyy-MM-dd HH:mm:ss.SSS} %5p [%t] %-40logger : %m%nSpring启动时有默认的日志输出六、完整yml配置logging:# 日志文件存储file:name:logs/demo-service.log# 日志级别控制level:root:infocom.example.demo:debugorg.springframework:warnorg.mybatis:warn# 日志滚动分割策略logback:rollingpolicy:max-file-size:200MBfile-name-pattern:${LOG_FILE}.%d{yyyy-MM-dd}.%i.gzmax-history:30# 保留30天历史日志# 自定义日志格式pattern:console:%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr([%15.15t]){cyan} %-40.40logger{39} : %m%n%wExfile:%d{yyyy-MM-dd HH:mm:ss.SSS} %5p --- [%t] %-40.40logger{39} : %m%n%wEx

相关新闻

从脚本到系统:构建生产级AI应用的工程素养

从脚本到系统:构建生产级AI应用的工程素养

引言:AI开发的"成人礼" 2022年底ChatGPT横空出世时,无数开发者体验过这样的快感:输入一段Prompt,AI瞬间生成一个能跑起来的Demo,效果惊艳到让人感觉"超级智能助手"触手可及。但当我们试图把这个De…

2026/7/23 0:43:37 阅读更多 →
第25章:Mongo分片集群入门——数据太大时怎么水平扩展

第25章:Mongo分片集群入门——数据太大时怎么水平扩展

1. 项目背景 业务场景:本地生活电商上线 18 个月,订单表突破 500GB、日均写入 200 万条。复制集虽然保证了高可用,但单台服务器的磁盘和 IOPS 已经到达物理上限——磁盘使用率 92%、写 IOPS 逼近极限、高峰期 CPU 100%。运维升级服务器配置&…

2026/7/23 0:42:37 阅读更多 →
别再盲目接单了!用波特五力模型重估你的AI副业定位——90%的人根本没看清替代品威胁指数已飙升至6.8

别再盲目接单了!用波特五力模型重估你的AI副业定位——90%的人根本没看清替代品威胁指数已飙升至6.8

更多请点击: https://kaifayun.com 第一章:别再盲目接单了!用波特五力模型重估你的AI副业定位——90%的人根本没看清替代品威胁指数已飙升至6.8 当ChatGPT-4o、Claude 3.5和通义千问Qwen2.5以零成本API调用涌入市场,你还在靠“写…

2026/7/23 0:42:37 阅读更多 →

最新新闻

Linux进程权限

Linux进程权限

本文是Linux系统下讨论。注意,Linux和Unix有很多不同的地方,并且各个不同的Unix系统也有很多不同。 本文讨论对象: ruid: real user id,即实际用户,也即当前登录的用户euid: effective user id, 即有效用…

2026/7/23 1:20:49 阅读更多 →
HarmonyOS ArkTS 实战:实现一个校园证件照拍摄与预约应用

HarmonyOS ArkTS 实战:实现一个校园证件照拍摄与预约应用

HarmonyOS ArkTS 实战:实现一个校园证件照拍摄与预约应用 项目效果 本文使用 HarmonyOS 和 ArkTS 实现一个校园证件照拍摄与预约应用。 应用可以预约证件照拍摄,选择证件照尺寸,在线选片,查看拍摄样片,并提供拍摄预约、照片下载、打印配送等功能。 项目使用 DevEco Studio…

2026/7/23 1:20:49 阅读更多 →
Tiva™ C系列外设管理:PP与SR寄存器实战指南

Tiva™ C系列外设管理:PP与SR寄存器实战指南

1. 从寄存器手册到实战:Tiva™ C系列外设管理的核心逻辑如果你和我一样,长期泡在嵌入式开发的一线,特别是基于ARM Cortex-M内核的MCU,那你肯定对“外设管理”这四个字深有感触。它远不止是初始化几个时钟、配置几个引脚那么简单。…

2026/7/23 1:20:49 阅读更多 →
深入解析ADC转换组:从基础原理到Hercules MCU高级应用

深入解析ADC转换组:从基础原理到Hercules MCU高级应用

1. ADC转换组:从“单兵作战”到“协同作战”的进化在嵌入式系统,尤其是实时控制系统的开发中,模数转换器(ADC)的角色,就像是系统的“感官”。它负责将外部世界的连续模拟信号(如温度、压力、电压…

2026/7/23 1:20:49 阅读更多 →
TM4C129XNCZAD系统控制寄存器深度解析:从芯片识别到时钟配置实战

TM4C129XNCZAD系统控制寄存器深度解析:从芯片识别到时钟配置实战

1. 项目概述与核心价值在嵌入式开发的底层世界里,系统控制寄存器就像是微控制器(MCU)的“神经中枢”和“身份档案库”。对于使用Tiva™ C系列TM4C129XNCZAD这类高性能ARM Cortex-M4内核MCU的工程师来说,仅仅会调用HAL库或驱动函数…

2026/7/23 1:20:49 阅读更多 →
内存覆盖和内存交换

内存覆盖和内存交换

覆盖和交换技术是在多道程序环境下用来扩充内存的两种方法。覆盖技术主要用在早期的操作系统中,而交换技术则在现代操作系统中仍具有较强的生命力。1、内存覆盖(Overlay)在早期的计算机系统中,主存容量很小。虽然主存中仅存放一道…

2026/7/23 1:19:49 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 12:54:44 阅读更多 →

月新闻