Spring Boot 配置中心 多环境配置日志级别 logback

配置文件操作实战:从Spring Boot到Nginx的多环境配置指南 配置文件是程序运行期可读取的外部参数集合,它将易变的运行参数与稳定的业务逻辑分离,是工程实践不可或缺的一环。在Spring Boot项目中,理解配置加载优先级、YAML语法与Profile切换机制,是掌握多环境配置的基础。通过合理使用application.yml、logback-spring.xml等文件,开发者可以实现开发、测试、生产环境的自动切换与日志分级输出。Nginx作为反向代理与静态资源服务器,其配置文件同样承载着流量转发与前端路由的关键职责。从配置外部化、环境隔离到敏感信息脱敏,一套规范化的配 阅读详情

说明:根据不同的环境打印不同级别的日志或者输出日志到不同的文件路径。

  •  application-dev.yml 配置
# 日志配置
logging:
  path: D:\\log\\dev
  config: classpath:logback.xml
  level:
    root: INFO
  • application-test.yml 配置(pro可以一样)
# 日志配置
logging:
  path: /data/logs
  config: classpath:logback.xml
  level:
    root: INFO
  • logback.xml 配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
    <!--定义日志文件的存储地址 从springboot配置文件中获取路径,勿在 LogBack 的配置中使用相对路径-->
    <springProperty scope="context" name="LOG_PATH" source="logging.path"/>
    <!--springboot配置文件中获取日志级别-->
    <springProperty scope="context" name="LOG_LEVEL" source="logging.level.root"/>
 
    <!-- 控制台输出-->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>
    <!-- 按照每天生成日志文件 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <FileNamePattern>${LOG_PATH}/server-api.log.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
            <!--日志文件保留天数-->
            <MaxHistory>30</MaxHistory>
            <!--日志文件最大的大小-->
            <MaxFileSize>10MB</MaxFileSize>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>

    <!--myibatis log configure-->
    <!--<logger name="com.apache.ibatis" level="TRACE"/>-->
    <logger name="java.sql.Connection" level="INFO"/>
    <logger name="java.sql.Statement" level="INFO"/>
    <logger name="java.sql.PreparedStatement" level="INFO"/>

    <!-- 日志输出级别 -->
    <!--Logger 可以被分配级别。级别包括:TRACE、DEBUG、INFO、WARN 和 ERROR,定义于ch.qos.logback.classic.Level类。如果 logger没有被分配级别,那么它将从有被分配级别的最近的祖先那里继承级别。root logger 默认级别是 DEBUG。-->
    <!--<root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>-->

    <!--开发环境:打印控制台-->
    <springProfile name="dev">
        <root level="${LOG_LEVEL}">
            <appender-ref ref="STDOUT" />
            <appender-ref ref="FILE" />
        </root>
    </springProfile>

    <!--测试环境:打印控制台-->
    <springProfile name="test">
        <!-- 打印sql -->
        <root level="${LOG_LEVEL}">
            <appender-ref ref="STDOUT" />
            <appender-ref ref="FILE" />
        </root>
    </springProfile>

    <!--生产环境:打印控制台和输出到文件-->
    <springProfile name="prod">
        <root level="${LOG_LEVEL}">
            <appender-ref ref="STDOUT" />
            <appender-ref ref="FILE" />
        </root>
    </springProfile>
</configuration>

主要代码:

<!--定义日志文件的存储地址 从springboot配置文件中获取路径  勿在 LogBack 的配置中使用相对路径-->
    <springProperty scope="context" name="LOG_PATH" source="logging.path"/>
    <!--springboot配置文件中获取日志级别-->
    <springProperty scope="context" name="LOG_LEVEL" source="logging.level.root"/>

<!--开发环境:打印控制台-->
    <springProfile name="dev">
        <root level="${LOG_LEVEL}">
            <appender-ref ref="STDOUT" />
            <appender-ref ref="FILE" />
        </root>
    </springProfile>

    <!--测试环境:打印控制台-->
    <springProfile name="test">
        <!-- 打印sql -->
        <root level="${LOG_LEVEL}">
            <appender-ref ref="STDOUT" />
            <appender-ref ref="FILE" />
        </root>
    </springProfile>

    <!--生产环境:打印控制台和输出到文件-->
    <springProfile name="prod">
        <root level="${LOG_LEVEL}">
            <appender-ref ref="STDOUT" />
            <appender-ref ref="FILE" />
        </root>
    </springProfile>

 

配置文件从入门到实战:格式解析、Spring Boot多环境与Nginx/MySQL改法 在软件开发与运维中,配置文件是连接代码与运行环境的桥梁。无论是后端服务、中间件还是系统组件,都依赖外部参数实现灵活调整。理解 properties、YAML、XML 等格式的语法特性,是避免缩进错误、覆盖混乱的基础。配置文件的核心价值在于解耦、环境隔离与快速调整,而正确的修改流程——定位路径、备份、校验、重载——能显著降低生产事故风险。Spring Boot 通过 Profile 与外部化配置实现多环境管理,Nginx 与 MySQL 的变更则需要结合语法检查和动态参数验证。当遇到配置不生效或冲突时,排查加 阅读详情

相关推荐

Java配置文件全解析:从Properties到YAML,Spring Boot配置实战指南

在软件工程中,配置文件是实现应用外部化配置和解耦的核心机制,它允许开发者在不修改代码的情况下调整程序行为。其原理是将可变参数从硬编码中剥离,存储于外部文件,通过特定格式(如键值对、标记语言)进行组织。这一技术价值在于提升应用的灵活性、可维护性和环境适应性,广泛应用于数据库连接、服务端口、日志级别等场景的配置管理。在Java生态中,配置文件格式历经演变,从基础的Properties文件到结构化的XML,再到如今Spring Boot推崇的YAML,每种格式都有其适用场景。本文聚焦于**Spring Boot配

weixin_34218890的博客 467

logback.xml和日志输入格式说明

logback使用 依赖jar文件 logback-core-xxx.jar logback-classic-xxx.jar logback.xml &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;configuration&gt; &lt;appender name="console" class="ch.qos.logb.

少健终望成,波中取千金----张少波 3750

Spring Boot配置加密实战:使用Jasypt保护数据库密码等敏感信息

在软件开发和部署中,敏感信息保护是基础安全实践。配置加密技术通过将配置文件中的明文信息转换为密文,防止敏感数据泄露。其核心原理是在应用启动时动态解密,对业务代码透明,实现了安全与便利的平衡。这项技术的核心价值在于以较低成本显著提升应用安全性,尤其适用于数据库连接信息、API密钥等敏感配置的保护。在Spring Boot生态中,Jasypt作为轻量级加密库,通过即插即用的方式与Spring Boot无缝集成,支持多种加密算法,并能与配置中心结合使用。本文以Jasypt为例,详细解析如何实现配置文件的加密解密,

weixin_34326179的博客 387

springboot3 多环境日志系统配置的问题,无法动态切换dev和prod,以及多环境日志系统的配置,和自动动态切换日志系统,include标签无法获取配置文件的active值

springboot3 多环境日志系统配置的问题,无法动态切换dev和prod,以及多环境日志系统的配置教程,和自动动态切换日志系统,include标签无法获取配置文件的active值

qq_46506007的博客 1106

从logback-spring.xml到bootstrap.yml:深入理解Spring Boot日志配置的加载时机与避坑实践

本文深入解析Spring Boot日志配置的加载机制与最佳实践,重点探讨logback-spring.xml与bootstrap.yml的加载顺序及常见问题解决方案。通过剖析日志系统架构、配置文件加载顺序和微服务场景下的配置策略,帮助开发者规避XXX_IS_UNDEFINED等典型问题,提升日志管理效率。

weixin_30619101的博客 197

Spring Boot配置文件加密实战:从Jasypt到Vault的完整方案

在应用开发中,配置管理是保障系统安全的重要环节,尤其是涉及数据库密码、API密钥等敏感信息时,明文存储会带来严重的数据泄露风险。其核心原理是通过加密算法对敏感配置进行转换,确保即使配置文件被获取,攻击者也无法直接读取原始信息。这项技术的价值在于实现安全性与可用性的平衡,防止因代码泄露、服务器入侵或运维不当导致的核心凭证暴露。常见的应用场景包括微服务架构中的配置集中管理、CI/CD流水线的安全部署以及满足各类安全合规要求。本文聚焦于Spring Boot生态,深入探讨了Jasypt集成、自定义Environm

weixin_34320724的博客 371

SpringBoot之logback-spring.xml详细配置或由命令行启动的时候-Dlogging.config指定logback-spring.xml配置文件

SpringBoot之logback-spring.xml详细配置或由命令行启动的时候-Dlogging.config指定logback-spring.xml配置文件

Meta39的博客 6111

eNSP网络构建—建立小型局域网

企业私有网络构建运维 实战案例——使用模拟器构建局域网络 案例分析 1.架构分析 (1)需求分析 本实验的目的在于建立小型局域网。由于公司由不同部门组成,并分布在不同地点,因此需要划分不同网络实现互联互通。设计以下网络:两个部门各使用一台交换机连接,然后连接到总交换机,再通过路由器与外网以及其他部门网络相连。为了控制网络上的广播风暴,增加网络的安全性,在交换机上需要设置VLAN,在路由器与交换机之...

_ 4万+

springboot整合logback(三)---常用配置及多环境配置

经过前两篇的介绍,我们知道了logback常用的配置标签的含义及每个标签常用的属性,以及springboot在整合logback时默认为我们做的配置,其实springboot2.X之后(我用的是2.1.6版本),对于logback的默认配置几乎满足了我们平时的需求,甚至没有特别需求直接使用默认配置都可以,或者有个别配置不满足我们的要求,可以在yml文件中直接配置,对默认配置进行覆盖,如我们对默认日志文件大小为10M不满意,感觉太小,可以直接在boot的配置文件中进行覆盖配置,如下我们修改为100M: l

FAIRYTAIL的博客 815

单晶塑性abaqus-umat自学

单晶塑性abaqus-umat 摘要1. 简介2. 单晶弹塑性本构模型回顾2.1运动学 本文以翻译黄永刚老师的umat文章为主,这个颜色的为个人的理解。 摘要 包含单晶塑性的abaqus用户材料子程序。本文回顾有限元形式的单晶弹塑性和黏弹塑性,包含小变形理论,以及严格的有限变形和有限旋转理论。单晶的非弹性变形由于晶体滑移,假定遵从Schmid准则。提出多种多样的分切应力与剪切变形的自硬化和潜硬化关系,并且包含在子程序内。 1. 简介   有限元程序ABAQUS已经广泛应用在固体的变形与应力分析。除了自身大量

Niklas4088的博客 1万+

【从零开始玩量化1】AKShare: Python开源财经数据接口库

文章目录量化的第一步:数据AKShare介绍AKShare安装AKShare使用AKTools安装/使用结语 量化的第一步:数据 想要玩量化,第一步要有数据,这个数据可能是历史交易数据、财务数据、宏观数据等等。我们最终要做的,无非就是从数据中分析出有价值的信息,以便用来指导投资策略。 在获取数据的这条道路上,我走了很多弯路,尝试了各种方法:使用Tushare到放弃、自己写网易股票页面的爬虫,自己写申万行业数据的爬虫、自己写同花顺问财的爬虫、使用聚宽的免费数据API等等,直到最终,我发现了AKShare。 A

量化投资助手的博客 5万+

logback读取spring的属性实现不同环境的日志灵活配置

第一种使用形式——加载指定的配置模块 中的name,读取的是spring.profiles.active配置项的值,不设置默认为default。 spring.profiles.active配置项可以配置在application.properties(application.yml)中,此时就是读取的spring配置文件。也可以在jvm参数中设置,-Dspring.profiles.active=dev. 如下两条的意思是,当spring.profiles.active配置为dev的时候,包裹在其中的部

alwaysBrother的博客 6598

数字IC设计实现之hierarchical flow系列(一)

数字IC设计实现之hierarchical flow系列(一) 最近这段时间小编又比较忙起来了,今天抽空来咖啡厅码字来了,刚到时脑子一片空白,不知道要分享些什么(项目结束后将会在知识星球上分享数字 IC 设计实现 Tapeout 前要review的那些 checklist)。突然间想起来有个星友希望小编分享些数字 IC 设计实现 hierarchical flow 的相关内容。考虑到现在大都采用这种方式来做 design 和实现,那就选这个 topic 了。限于篇幅和时间限制,今天只分享逻辑综合部分和布局布

weixin_37584728的博客 6002

Logback变量解析的陷阱与解决方案:从XXX_IS_UNDEFINED到优雅处理

本文深入探讨了Logback在Spring Boot项目中变量解析的常见陷阱,特别是`XXX_IS_UNDEFINED`问题的根源与解决方案。通过分析配置加载顺序问题,提供了从基础改造到高级定制的多层次解决方案,包括使用`logback-spring.xml`、配置中心适配和防御性编程技巧,帮助开发者实现优雅的日志管理。

plum99的博客 184

你分得清ChatGPT、Gemini、Grok、豆包、千问、DeepSeek、OpenClaw、CloudCode、vibeCodeing、sKill、MCP,飞书、微信这些到底是什么吗?

AI技术生态呈现层级化发展,从基础模型到应用平台形成完整技术栈。核心分为五层:模型层(GPT、Gemini等基础模型)→AI助手层(ChatGPT等应用产品)→工具层(ClaudeCode等开发工具)→协议层(MCP等接口标准)→应用层(微信、飞书等平台)。未来趋势将形成"模型公司-开发框架-应用生态"三层结构,AI正逐步演变为新型操作系统,通过标准化协议连接各类外部系统,实现能力调用与生态整合。技术发展呈现出从底层基础设施到上层应用场景的垂直整合特征。

hy行者勇哥的博客 398

python中视觉检测怎么将多个面拍照的图片合成一个3d图像,用什么技术或者什么模型?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 710

Spring Boot集成Apollo配置中心:从原理到实战的完整指南

在微服务架构中,配置管理是保障系统稳定性和可运维性的核心环节。配置中心通过集中化管理、动态推送和版本控制等原理,解决了传统配置文件散乱、更新需重启、缺乏审计等痛点,其技术价值在于实现配置与代码分离,提升部署效率和系统弹性。典型应用场景包括多环境配置同步、运行时参数调整和敏感信息统一管理。本文聚焦于携程开源的Apollo配置中心,它凭借配置实时生效、完善的权限审计和高可用设计成为行业热门选择。通过Spring Boot集成Apollo的实战演示,涵盖环境搭建、核心配置、代码集成及生产级最佳实践,帮助开发者掌握

weixin_34218579的博客 446

关于机器人精度的总结(重复精度和绝对精度区分)

机械臂是工业生产中的重要设备,在焊接码垛 以及 非 接触测量等 领域中有 着重要应 用。然而由于机械臂本体制造中存在机械制造公差装配误差导致的运动学参数误差以及电机转角与关节转角间减速比误差等,导致机械臂存在。因此需要对机械臂进行标定,提高机械臂的绝对定位精度。ABB系列某款机器人精度参数表。

大胡子大叔的专栏 1万+

Spring Boot项目整洁架构实战:Apollo配置中心与分层设计指南

在微服务架构中,配置管理和代码结构清晰度是保障项目可维护性的核心。配置中心作为实现配置外部化与动态刷新的关键技术,能够有效解决配置散落、环境隔离等痛点,其原理是通过集中化管理实现配置的实时推送与版本控制。Spring Boot作为主流的Java开发框架,结合Apollo配置中心,能够显著提升项目的可观测性和部署灵活性。这种技术组合在电商、金融等需要快速迭代和高可用性的应用场景中价值尤为突出。本文以Spring Boot与Apollo集成为例,通过依赖管理、配置隔离和分层架构等工程实践,演示如何构建职责清晰、

weixin_33857230的博客 501

如何计算 R 中的基尼系数(附示例)

以意大利统计学家Corrado Gini命名,基尼系数是衡量人口收入分配的一种方法。基尼系数的值在 0 到 1 之间,值越高代表收入不平等越大,其中:0代表完全的收入平等(每个人的收入都一样) 1代表完全的收入不平等(一个人拥有所有收入) 您可以在此处找到按国家/地区列出的基尼系数列表。以下示例显示了使用DescTools包中的Gini()函数计算 R 中的基尼系数的两种方法。示例 1:使用个人收入计算基尼系数假设我们有以下 10 个人的年收入列表:收入:5 万美元、5 万美元、7 万美元、7 万美元、7

Mrrunsen的博客 2991

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Apollo配置中心实战:Spring Boot集成与微服务配置管理指南

在微服务架构和云原生环境中,配置管理是保障系统稳定性和灵活性的关键技术。其核心原理在于将分散的应用配置集中化存储与管理,通过配置中心实现动态推送和统一治理,从而解决配置散乱、更新需重启、环境差异等工程难题。这项技术的核心价值在于提升研发效率、增强系统可观测性,并支持持续交付。在实际应用场景中,配置中心广泛应用于微服务动态扩缩容、多环境配置隔离、敏感信息加密等场景。本文以业界广泛采用的Apollo配置中心为例,结合Spring Boot框架,详细讲解从环境搭建、客户端集成到生产级实践的全过程,涵盖动态更新、命

weixin_34187862的博客 419

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Spring Boot集成Apollo配置中心实战:构建动态配置管理服务

在微服务架构和分布式系统中,配置管理是保障应用灵活性和可维护性的基础技术。其核心原理在于将应用配置从代码中分离,实现集中化存储与管理,从而解决传统配置散落、变更繁琐、环境差异等痛点。配置中心的技术价值在于支持配置的动态更新、实时推送、版本控制和环境隔离,显著提升了研发效率和系统可靠性。这一机制广泛应用于功能开关、业务规则、连接参数等需要频繁调整的场景。本文以构建一个信息同步服务为例,深入演示了如何通过Spring Boot框架集成Apollo配置中心,实现配置的集中管理、实时监听与动态刷新,并详细解析了配置

weixin_33937913的博客 434

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java配置文件实战:从Properties到YAML,Spring Boot配置管理与多环境部署

在Java开发中,配置文件是实现配置与代码分离的核心技术,它通过将可变参数(如数据库连接、日志级别)从业务逻辑中抽离,显著提升了应用的灵活性和可维护性。其工作原理是基于键值对或层级结构的数据存储,由框架(如Spring Boot)在启动时加载并注入到应用程序中。这项技术的核心价值在于支持多环境适配(开发、测试、生产)与动态更新,是实现DevOps持续交付和微服务架构的基石。在实际应用场景中,开发者需要根据项目需求选择合适的配置文件格式,例如简洁的Properties、结构清晰的YAML,并结合Spring

weixin_34072637的博客 392

Spring Boot核心原理与实践:从自动配置到生产部署

在Java企业级应用开发中,约定大于配置是一种重要的设计范式,旨在通过预设最佳实践来减少繁琐的XML和代码配置,从而提升开发效率。其核心原理在于依赖自动装配和条件化加载机制,通过分析类路径、Bean定义和属性设置,智能地初始化应用组件。这一技术价值在于显著降低了项目启动和维护的复杂性,使得开发者能更专注于业务逻辑实现。在微服务架构和云原生场景下,这种开箱即用的特性尤为重要,它简化了服务的独立部署与扩展。Spring Boot作为该范式的杰出代表,通过自动配置、Starter依赖和内嵌容器等机制,将这一理念发

weixin_33831673的博客 388

SpringBoot从入门到精通教程(八)- 多环境配置文件用法

需求背景 在没有使用配置中心的情况下,其实默认在Springboot2框架中,是支持了多个配置文件,允许在不同环境下切换的了,可以去结合Jenkins/Docker来使用(这部分内容后续会更新) 准备内容 1. 准备两个Mysql实例,db1和db2 2. 两份数据库初始化init.sql脚本内容(或Docker安装MySQL数据库) db1-init.sql -- for db...

Think Different 3345

Spring Boot配置系统与日志框架实战指南

配置系统和日志框架是现代软件开发的基础设施,如同汽车的仪表盘和黑匣子。配置系统通过分层设计(环境变量、JVM参数、配置文件、远程配置中心)实现灵活的环境管理,而日志框架则通过异步处理、结构化日志等技术平衡性能与可观测性。在微服务架构中,Spring Cloud Config和Log4j2等工具能显著提升运维效率,其中Log4j2在高并发场景下吞吐量比Logback高40%。合理运用Jasypt加密和ELK日志分析等方案,不仅能保障敏感数据安全,还能实现高效的故障排查与性能优化。这些技术在金融级系统和容器化环

germmy-神一样的开发 431
上一篇: 单表千万级数据 count() 统计优化
下一篇: 根据参数类型,设置返回类型
JavaAlpha
博客等级 码龄18年 910粉丝 511原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值