今天又学了 Spring Boot logging,你学会了吗?

【Spring】SpringBoot日志 什么是日志,如何打印日志,什么是日志框架,什么是日志级别,如何做到日志的持久化,如何高效的使用日志 阅读详情

今天指北君将要带实习生来了解下 Spring Boot 中日志框架的使用。

实习生:大佬好,今天你要讲什么呀?

大佬:今天跟你讲讲 Spring Boot 日志是怎么回事的,先看下我整理的思维导图吧。

今天就从这几个角度来讲。

实习生:好的,那我们先来看看概述吧。

大佬:spring boot 内部使用的是 apache 开源的 commons logging 来记录日志的。但是呢,它又提供了基础的日志实现接口,方便向 java util logging、 log4j、logback之类的接入。spring boot 现在已经为 Java util logging 、log4j2、logback 提供了默认的实现。我们如果需要使用的话,只要简单配置就可以了。

实习生:要这么说的话,spring boot 可真nb啊,轻轻松松就搞定了。你刚刚说了 spring boot 已经内置实现了 logback 这些, 那我看你图里还有starter的描述啊,默认所有的都夹在进来了吗?

大佬:小伙子可以啊,spring boot 当然没有把所有的都加载进来,条件自动化配置你忘记了吗?如果我们项目只依赖了一个 spring-boot-starter 的话,你看我这个项目的依赖图,自由这么几个,如果你想依赖 log4j2 的话,你要添加 spring-boot-starter-log4j2 才行。

实习生:soga, 我懂了。

大佬:我们来看看日志的输出格式是怎么样的。我们平时启动项目的时候,在控制台上看到的这些内容,是有固定的格式的。

一开始是日期和时间,然后是日志的等级、线程ID、分割线、线程名称、logger name 、日志消息。我在思维导图里做了归纳, 日志等级这里我使用的是logback的等级制度,部分其他的会是以FATAL 代替 ERROR 的。

实习生:这个挺简单的呀。你这么一画,我感觉很清晰啊。你看这个终端输出那里有不同的颜色,这个是怎么配置的呢?

大佬:不要着急啊, 你看我的思维导图,下一个环节不就是要讲了吗?

默认情况下,spring boot 项目的日志输出方式是控制台输出。控制台输出一般情况下只有3中输出方式,就是上面写的 ERROR、WARN、INFO。因为打开debug的话,所有其他的日志都会打出来,对我们开发来说不太方便。

实习生:那这个还是可以打开的吧,或者我想调试spring boot 的启动过程之类的,我就想把它打开,这样我对启动过程可以看的更加清楚一些。

大佬:是的,你可以打开,而且也挺方便的。有两种方式,第一种方式就是通过命令行设置

java -jar myapp.jar --debug

第二种:在配置文件里直接配置就行

application.properties 配置 debug=true

至于,刚才你说到的颜色问题,其实也蛮简单的,如果你的控制台支持 ASNI 的话,就配置一下就可以了,主要是配置%clr 这个轻轻松松搞定了。直接看思维导图就行了。

实习生:你说的没错,但是我还有一个疑问,ASNI是什么?

大佬:这玩意就是一种编码方式,一句两句也讲不清楚,我给你搜索一下吧。

ANSI是一种字符代码,为使计算机支持更多语言,通常使用 0x00~0x7f 范围的1 个字节来表示 1 个英文字符。超出此范围的使用0x80~0xFFFF来编码,即扩展的ASCII编码。

指北君:接下来我们看看文件输出日志的配置,默认情况下我们只要在applicaiton.properties文件直接配置就行了。

logging.file.name=app.log
logging.file.path=/xxx

实习生:这个我知道,但是你导图上写的文件分割,又是怎么回事呢?

大佬:这个你都没懂吗?我们日志写入到文件里之后,如果我们不处理的话,文件可以把你电脑写爆了。另一方面,方便我们处理日志文件啊。

实习生:好的,大佬我错了。我怎么没想到呢。

大佬:别扯这些,我们继续来看。

实习生:你这个写的啥意思啊?没懂,上面不是讲过了,再讲一遍?

大佬:上面只是提了下等级,并没有提怎么设置,你看仔细了,我们可以针对某个package来设置日志输出的等级。

实习生:唉,这个我怎么没想到呢,可以单独设置。我之前看项目我都没注意到这个问题。

大佬:没关系,现在不是已经知道了吗?我们继续吧。

实习生:好的,大佬,你这里写的日志关闭hook是干啥的?

大佬:其实这个就像我们spring boot 怎么做到优雅停机一样。我们要做到先把日志打印入口先关闭了,然后把打印的日志打印完,我再结束我这个日志打印的线程。

实习生:你这么说我就明白了。

大佬:上面讲述的都是通过配置spring boot 默认实现的方式来配置日志,我们还可以自己个性化配置日志输出的情况。在这我们以前spring 项目的时候,是很常见的。我们现在也一直在延续使用这种方式。

实习生:那你这个最后那个环节 也是和这个自定义配置有关了吧

大佬:你小子眼睛还挺尖的啊,我这里主要是说明两个东西,一个是 spring boot profiles在日志文件中的应用。

<springProfile name="dev | staging">
    ...
</springProfile>

另外一个是怎么引入 sping的环境变量。

<springProperty scope="context" name="fluentHost" source="myapp.fluentd.host"
        defaultValue="localhost"/>
<appender name="FLUENT" class="ch.qos.logback.more.appenders.DataFluentAppender">
    <remoteHost>${fluentHost}</remoteHost>
    ...
</appender>

实习生:hoho,可以啊,这操作不错。

总结

今天就是带大家过一遍 spring boot logging 是什么一回事,怎么配置使用的。

本文的所有示例源代码和完整的思维导图都已上传到了 Github:

https://github.com/javatechnorth/java-north-sample

深入解析mvn spring-boot:run命令:从Maven插件到Spring Boot应用启动全流程 在Java企业级开发中,Maven作为核心构建工具,通过其插件机制实现了项目依赖管理与构建流程的自动化。其生命周期模型与插件目标(Goal)的协作原理,为现代Java应用提供了标准化的构建范式。Spring Boot Maven插件在此基础上,通过分叉(Fork)JVM进程、智能构建类路径(Classpath)等工程实践,将“约定大于配置”的理念落地,极大地提升了开发效率。这一技术组合的价值在于,它统一了开发与构建环境,使得开发者能通过一条简单的命令行指令,即可完成从代码编译、资源处理到应用启动的完整链路。 阅读详情

相关推荐

探秘 Spring Boot Starter:为何它是 Spring Boot 框架的灵魂所在

它是 Spring Boot自动配置、依赖管理、启动流程的核心入口。理解它如何通过 @SpringBootApplication 整合条件装配(@Conditional)、加载 META-INF/spring.factories 等机制,是掌握 Spring Boot 的关键。启动阶段:spring-boot 提供入口,spring-core 提供容器基础。配置加载:snakeyaml 解析 YAML,spring-boot-autoconfigure 根据配置和条件装配 Bean。日志管理。

weixin_45593273的博客 445

Spring Boot Logging 配置

Spring Boot 能够使用Logback, Log4J2 , java util logging 作为日志记录工具。Spring Boot 默认使用Logback作为日志记录工具。日志默认输出到控制台但也能输出到文件中。我们通过spring-boot-starter-logging 加入Logback依赖,其实只要我们加入任意的Spring Boot starter 都会默认引入spring-boot-starter-logging,因此 我们不需要分开加入他们。 如果Logback JAR在类路径

qq_22685435的博客 1万+

IntelliJ IDEA创建Spring Boot项目:从环境配置到第一个接口的完整指南

在Java企业级开发中,Spring Boot以其“约定大于配置”的理念,通过自动配置机制和Starter依赖,极大地简化了基于Spring框架的应用搭建过程。其核心价值在于提供了一套标准化的项目结构和开箱即用的功能模块,让开发者能够快速构建生产级的独立应用。在实际工程实践中,开发者通常借助集成开发环境(如IntelliJ IDEA)和构建工具(如Maven)来高效管理项目生命周期。本文聚焦于使用IDEA的Spring Initializr向导,详细演示如何配置JDK、选择依赖(如Spring Web、Lo

weixin_34310369的博客 482

SpringBoot——logging

文章目录日志1、日志格式2、控制台输出2.1 彩色输出3、文件输出4、日志级别5、日志分组6、自定义log配置7、Logback扩展7.1 Profile配置7.2 Environment属性8、SLF4j的使用8.1 如何在系统中使用SLF4j8.2 其余问题9、Logback.xml 根据 SpringBoot v2.2.1.RELEASE 的官方文档 日志 日志框架包括两种: 日志门面——...

weixin_40971059的博客 2748

Spring Boot + MyBatis-Plus SQL日志打印全解析:从原理到最佳实践

在Java企业级应用开发中,SQL日志是调试与性能分析的关键。其核心原理在于ORM框架(如MyBatis)通过日志门面(如SLF4J)将SQL执行信息桥接到具体的日志实现(如Logback)。这项技术的价值在于,开发者能直观监控数据库交互,精准定位慢查询与逻辑错误,从而保障应用性能与数据一致性。典型的应用场景包括开发调试、线上问题排查与性能优化。本文聚焦于**Spring Boot**与**MyBatis-Plus**技术栈,针对SQL日志不输出或无法关闭的常见痛点,深入剖析其日志实现机制与配置优先级,并提

weixin_34109408的博客 478

Spring Boot集成Apollo配置中心:从原理到实战解决bootstrap配置加载问题

在微服务架构中,集中式配置管理是保障应用灵活性与可维护性的核心技术。其核心原理在于将配置外部化、中心化,实现应用配置与代码的分离。这项技术的核心价值在于支持配置的动态更新、环境隔离和统一管理,从而大幅提升分布式系统的运维效率。典型的应用场景包括数据库连接、功能开关、服务地址等运行时参数的动态调整。本文聚焦于Spring Boot框架与Apollo配置中心的集成实践,针对配置加载的常见痛点——特别是“apollo.bootstrap.enabled”开关失效导致配置无法在应用启动早期加载的问题,提供了从环境检

weixin_34288121的博客 358

Spring Boot干货系列:(七)默认日志框架配置

后端编程嘟 2017-04-05 21:53 前言 今天来介绍下Spring Boot如何配置日志logback,我刚学习的时候,是带着下面几个问题来查资料的,你呢 如何引入日志? 日志输出格式以及输出方式如何配置? 代码中如何使用? 正文 Spring Boot在所有内部日志中使用Commons Logging,但是默认配置也

AndyLizh的专栏 5万+

Spring Boot集成MyBatis时@Mapper注解扫描失效的全面排查与解决方案

在Java企业级应用开发中,对象关系映射(ORM)框架是连接应用与数据库的关键技术层。MyBatis作为一款半自动化的ORM框架,通过将SQL语句与Java方法解耦,提供了灵活的数据访问能力。其核心原理在于利用动态代理机制,将标注了@Mapper的接口在运行时生成实现类,从而执行映射的SQL操作。这一机制的技术价值在于平衡了SQL可控性与开发效率,使得开发者既能编写优化过的SQL,又能享受对象化操作的便利。在Spring Boot项目中,通过mybatis-spring-boot-starter这一“桥梁”

weixin_34050519的博客 428

SpringBoot——日志及原理

1)、SpringBoot 底层也是使用 slf4j+logback 的方式进行日志记录的。2)、SpringBoot 也考虑到了其他日志,将他们都替换成了 slf4通过替换包。3)、中间替换包?我们通过引入的jar包查看究竟:4)、如果我们引入了其他框架?一定要把这个框架的默认日志依赖移除掉。

程序猿进阶 3138

告别手敲!IntelliJ IDEA社区版搭配Spring Boot Assistant,实现yml文件智能补全的保姆级教程

本文详细介绍了如何在IntelliJ IDEA社区版中通过安装Spring Boot Assistant插件实现yml文件的智能补全,大幅提升Spring Boot项目配置效率。从插件安装、配置优化到实战技巧,全面解析如何避免常见配置错误,利用智能提示、文档悬浮和源码跳转等功能,让开发更加高效便捷。

chushang0934的博客 439

Spring Boot启动日志CONDITIONS EVALUATION REPORT深度解析与实战指南

在Java企业级应用开发中,Spring Boot的自动配置机制是实现"约定大于配置"理念的核心技术。其原理基于条件注解,通过智能评估类路径、Bean定义和配置属性,动态决定组件的加载与装配。这一机制的技术价值在于大幅简化了传统Spring应用的繁琐配置,提升了开发效率与项目可维护性。在实际应用场景中,开发者常需排查Bean加载失败、依赖冲突或功能未生效等问题。此时,Spring Boot生成的CONDITIONS EVALUATION REPORT(条件评估报告)便成为关键的诊断工具。该报告详细记录了自动

weixin_34242819的博客 503

今天又学了 Spring Boot logging

如果我们项目只依赖了一个 spring-boot-starter 的话,你看我这个项目的依赖图,自由这么几个,如果你想依赖 log4j2 的话,你要添加 spring-boot-starter-log4j2 才行。至于,刚才你说到的颜色问题,其实也蛮简单的,如果你的控制台支持 ASNI 的话,就配置一下就可以了,主要是配置%clr 这个轻轻松松搞定了。实习生:那这个还是可以打开的吧,或者我想调试spring boot 的启动过程之类的,我就想把它打开,这样我对启动过程可以看的更加清楚一些。

lt_xiaodou的博客 332

Spring Boot HTTPS证书更新后仍显示过期?从原理到实战的根治方案

HTTPS作为保障网络通信安全的核心协议,其核心原理是通过SSL/TLS协议对传输数据进行加密和身份认证。实现这一安全握手的关键在于服务器端配置有效的数字证书。在Java生态中,Spring Boot项目通常通过配置server.ssl属性来启用HTTPS,并加载包含私钥和证书的密钥库(如PFX/PKCS12格式)。这一技术为Web应用提供了基础的安全保障,但其配置与更新流程在实践中常遇到证书替换后不生效的典型问题,直接影响服务可用性与用户体验。本文聚焦于Spring Boot应用更新PFX证书后依旧显示过

weixin_33997389的博客 589

Spring Boot请求链路Logging重复打印的过滤器链修复方案

解决 Spring Boot 请求链路 Logging 重复打印问题,需要仔细分析问题根源,并采取针对性的解决方案。通过日志分析,找出重复打印的过滤器。避免使用过于宽泛的 URL 匹配规则。使用@Order注解或的setOrder()方法控制过滤器的执行顺序。业务日志应该在 Controller 或 Service 层打印。方便追踪请求的上下文信息。使用可以更精细地控制过滤器的注册和配置。根据环境配置决定是否注册Bean。确保配置正确,避免冲突。

weixin_41455464的博客 871

【SpringBoot 4.x 第1节】夯爆了,为什么现在要学 Spring Boot 4.x?从零开始理解版本体系、核心变化与真实项目开发路线(超详解)!

🏆 本文收录于 《滚雪球学 Spring Boot 4.x》 专栏。 本专栏面向 有一点 Java 基础,但没有系统学过 Spring Boot 的读者,采用“滚雪球式学习法”:先跑通、再理解、再重构、再上线,最终带你从第一个 Hello API 一路完成一个可部署、可监控、可扩展的后端项目。

**My Coding Family** 1万+

Python爬虫实战:5分钟抓取东方财富股票数据并保存为CSV

在投资分析与量化研究的日常工作中,获取结构化、可用的金融数据往往是第一步。对于个人投资者和量化入门者而言,如何高效获取A股全市场行情,常常面临网页动态加载、反爬机制与数据整理繁琐等挑战。本文从数据采集的基础概念出发,介绍如何利用Python这一通用编程语言,通过requests库请求财经网站公开的HTTP接口,获取返回的JSON数据,再借助pandas进行字段映射、数据清洗与表格化处理。这种方式相比传统页面解析具有响应快、结构稳定、易于批量操作的显著优势,尤其适合构建个人股票数据池、验证选股策略或进行市场情

weixin_33146151的博客 251

Spring Boot安全漏洞CVE-2016-1000027:远程配置加载风险剖析与修复指南

在Java企业级应用开发中,Spring Boot以其自动配置和快速启动的特性广受欢迎。其核心机制之一是通过PropertySource管理来自不同源的配置属性,如文件、环境变量等,这为应用提供了极大的灵活性。然而,这种灵活性若缺乏安全边界,则可能引入风险。当应用被打包为可执行jar/war时,其自定义的资源加载器在处理如`spring.config.location`或`logging.config`等配置路径时,若未对协议进行严格校验,可能将用户可控的输入(如HTTP URL)视为可信配置源进行加载。这

weixin_33912246的博客 371

博士申请-考核制经验分享(2)——个人简历

申博过程中一般在联系导师时就将个人简历作为邮件附件,有些学校也会在提交材料或者复试阶段提交个人简历。

weixin_49282401的博客 5520

Spring Boot启动流程解析与面试高频问题

Spring Boot作为Java生态中主流的应用框架,其启动流程涉及自动配置、依赖注入等核心技术原理。通过SpringFactoriesLoader机制加载扩展组件,结合@Conditional条件注解实现智能装配,大幅提升了开发效率。在工程实践中,理解ApplicationContext初始化、Bean生命周期管理等核心机制,能有效解决组件扫描冲突、环境隔离等典型问题。本文以自动配置实现和嵌入式容器启动为切入点,深入分析Spring Boot启动过程中的关键阶段,并针对面试常见问题提供技术解析。

weixin_33721344的博客 328

Simplorer-Maxwell联合仿真速度太慢?我用这3个技巧把仿真时间砍半(附SVPWM周期与步长设置避坑)

本文详细介绍了Simplorer-Maxwell联合仿真性能优化的3个关键技巧,包括仿真步长与周期的科学配置、基于任务调度的加速技术以及模型简化与精度平衡。特别针对SVPWM参数设置提供了避坑指南,帮助工程师在不牺牲精度的情况下将仿真时间缩短50%以上,适用于电机驱动系统开发等场景。

weixin_29189381的博客 466

无符号整数、带符号整数溢出问题

让我们详细讲解一下带符号整数溢出和无符号整数溢出问题中,符号标志位 (SF)、零标志位 (ZF) 和进位标志位 (CF) 的行为方式

weixin_49342084的博客 2084
上一篇: 单机高并发模型的设计
下一篇: 双非三面滴滴如何成功上岸?Java后端进阶笔记+大厂面试真题+快速面试指南
JavaMonsterr
博客等级 码龄4年 211粉丝 481原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值