SpringBoot中,不同环境的日志配置
1、背景
日志的配置,不同的环境对于日志的处理方式也是不同的。例如开发环境,我们需要日志打印到控制台,可以及时的调试,但是没有太大的必要输出到文件。但是呢生产环境,一般只需要序列化到文件。而不需要输出到控制台。而且生产环境的日志打印级别一般都是在 INFO 以上,而开发环境肯定是 DEBUG。
2、以前对于不同环境的日志处理方式,yaml配置
通过不同的 profile 去加载不同的日志配置文件
logging:
config: classpath:logback-${spring.profiles.active}.xml
这样的弊端显而易见,需要创建,维护多个不同的日志文件。
3、使用 springProfile
可以在 spring-logback.xml 中的 configuration 节点下配置 springProfile 节点
它有一个name属性, 只有在当前profile环境下才会加载该节点下的内容
<springProfile name="staging"></springProfile>
demo
<configuration> .... 忽略其他的配置 <!-- 控制台输出 --> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${CONSOLE_LOG_PATTERN}</pattern> </encoder> </appender> <!-- 开发环境 --> <springProfile name="dev"> <root level="DEBUG"> <appender-ref ref="console" /> </root> </springProfile> <!-- 生产环境 --> <springProfile name="pro"> <!-- 输出到文件 --> <appender name="rolling" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>production.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <maxFileSize>100MB</maxFileSize> <fileNamePattern>%d{yyyy-MM-dd}-%i.zip</fileNamePattern> <maxHistory>60</maxHistory> <totalSizeCap>1GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>${FILE_LOG_PATTERN}</pattern> </encoder> </appender> <root level="DEBUG"> <appender-ref ref="rolling" /> </root> </springProfile> </configuration>
还支持表达式
只有 spring.profiles.active=staging 才会激活
<springProfile name="staging"></springProfile>
只有 spring.profiles.active=staging 或着 spring.profiles.active=dev 才会激活
<springProfile name="dev | staging"></springProfile>
只有不是 spring.profiles.active=production 才会激活
<springProfile name="!production"></springProfile>
通过配置 springProfile
,只需要维护一个日志文件,就可以在不同的环境下,使用不同的日志配置。
摘自https://springboot.io/t/topic/757
分类:
SpringBoot
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)