Spring Boot日志配置与环境切换实战

embedded/2025/2/26 0:05:30/

在实际的项目开发中,我们常常需要根据不同的运行环境(如开发环境、测试环境和生产环境)来调整日志的输出格式和级别。Spring Boot通过标签为我们提供了一种非常便捷的方式来实现基于环境的条件配置。本文将通过一个具体的实例,详细讲解如何利用标签在Logback配置文件中实现不同环境下的日志配置,并展示其效果。
一、Spring Boot环境切换与日志配置的基本原理
Spring Boot支持通过激活不同的Profile来切换应用的配置。Profile可以通过application.properties文件中的spring.profiles.active属性来指定。在Logback配置文件中,我们可以通过标签来定义不同Profile下的日志配置规则。当应用启动时,Spring Boot会根据激活的Profile来加载对应的日志配置。
二、实例演示

  1. Logback配置文件
    在src/main/resources目录下创建logback-spring.xml文件,内容如下:
    xml复制
<?xml version="1.0" encoding="UTF-8"?> %d{yy-MMMM-dd HH:mm:ss:SSS} %5p %t %c{2}:%L - %m%n %d{yy-MM-dd E HH:mm:ss.SSS} %5p %t %c{2}:%L - %m%n
<!-- 根据环境设置不同的日志级别 -->
<springProfile name="dev"><root level="DEBUG"><appender-ref ref="stdout"/></root>
</springProfile>
<springProfile name="prod"><root level="INFO"><appender-ref ref="stdout"/></root>
</springProfile>
在上述配置中,我们定义了一个名为stdout的控制台日志输出器,并通过标签为开发环境(dev)和生产环境(prod)分别设置了不同的日志格式。同时,我们还根据环境设置了不同的日志级别:开发环境为DEBUG,生产环境为INFO。 2. 应用配置文件 在src/main/resources/application.properties文件中,添加以下内容: properties复制 spring.main.banner-mode=off spring.main.logStartupInfo=false spring.profiles.active=prod 这里我们将默认激活的Profile设置为prod,即生产环境。 3. 主程序 创建一个Spring Boot主程序ExampleMain.java,代码如下: java复制 import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.slf4j.Logger; import org.slf4j.LoggerFactory;

@SpringBootApplication
public class ExampleMain {
private static final Logger logger = LoggerFactory.getLogger(ExampleMain.class);

public static void main(String[] args) {SpringApplication.run(ExampleMain.class, args);logger.info("just a test info log");
}

}
在主程序中,我们通过logger.info输出了一条测试日志。
三、运行结果

  1. 生产环境(prod)
    启动应用后,控制台输出的日志格式为:
    复制
    17-11-08 Wed 22:30:45.689 INFO main o.s.c.a.AnnotationConfigApplicationContext:583 - Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@551bdc27: startup date [Wed Nov 08 22:30:45 CST 2017]; root of context hierarchy
    17-11-08 Wed 22:30:46.115 INFO main o.s.j.e.a.AnnotationMBeanExporter:431 - Registering beans for JMX exposure on startup
    17-11-08 Wed 22:30:46.126 INFO main c.l.e.ExampleMain:14 - just a test info log
    可以看到,日志级别为INFO,且日志格式符合生产环境的配置。
  2. 开发环境(dev)
    将application.properties文件中的spring.profiles.active改为dev,重新启动应用后,控制台输出的日志格式为:
    复制
    17-November-08 22:39:10:983 DEBUG main o.s.b.l.ClasspathLoggingApplicationListener:52 - Application started with classpath: [file:/C:/Program%20Files/Java/jdk1.8.0_65/jre/lib/charsets.jar, …
    17-November-08 22:39:11:001 DEBUG main o.s.c.e.PropertySourcesPropertyResolver:92 - Could not find key ‘context.listener.classes’ in any property source

    此时,日志级别为DEBUG,且日志格式符合开发环境的配置。
    四、总结
    通过本文的实例,我们展示了如何利用Spring Boot的标签在Logback配置文件中实现不同环境下的日志配置。这种方法不仅可以让我们的日志配置更加灵活,还能根据实际需求快速切换日志级别和格式,从而更好地满足开发、测试和生产环境的不同需求。

http://www.ppmy.cn/embedded/167151.html

相关文章

【行业解决方案篇十四】【DeepSeek法律科技:合同条款解析引擎】

开篇:当AI成为"法律CT机" 你可能不知道,某上市公司法务部去年审了2185份合同,其中73%的时间花在找条款间的"埋伏笔"。现在DeepSeek的合同解析系统,能让这些戴着金丝眼镜的法律顾问们用CT扫描般的精度看透每份合同。今天要讲的这个系统,不只是关键词匹…

安装PHPStudy 并搭建DVWA靶场

目录 一、PHPStudy 简介 二、DVWA 简介 三、安装 PHPStudy 四&#xff1a;安装 DVWA 一、PHPStudy 简介 phpstudy傻瓜式的一键启动&#xff0c;支持WAMP、WNMP、LAMP、LNMP&#xff0c;一键切换环境&#xff08;nginxapahce&#xff09;,一键切换PHP版本&#xff08;5.1-7…

【够用就好006】-PC桌面管理ECS服务器的实操步骤

背景介绍解决思路拓展知识 背景介绍 #够用就好#知其然知其所以然#aigc创意人左边 我计划搭建个人网站&#xff0c;计划格式化我的ECS服务器&#xff0c;但是里面有我之前的实践项目&#xff0c;我舍不得删除&#xff0c;我想要保存到本地。 通常我都是在vscode中用remotes ssh…

安卓系统远程控制电脑方法,手机远控教程,ToDesk工具

不知道大家有没有觉得手机、平板虽然很好用&#xff0c;却也仍存在有很多替代不了电脑的地方。就比如说撰写文档、做数据报表啥的就不如PC端操作般方便&#xff0c;就跟别说PS修图、AE视频剪辑等需高性能设备来带动才易用的了。 好在也是有对策可解决&#xff0c;装个ToDesk远程…

基于SpringBoot+vue+uniapp的智慧旅游小程序+LW示例参考

系列文章目录 1.基于SSM的洗衣房管理系统原生微信小程序LW参考示例 2.基于SpringBoot的宠物摄影网站管理系统LW参考示例 3.基于SpringBootVue的企业人事管理系统LW参考示例 4.基于SSM的高校实验室管理系统LW参考示例 5.基于SpringBoot的二手数码回收系统原生微信小程序LW参考示…

【刷题】贪心算法

贪心算法通常用于那些可以通过局部最优解达到全局最优解的问题&#xff0c;也就是说每一步都选择当前看起来最好的选项&#xff0c;从而希望最终的结果是最优的。 基础概念 [分配问题]&#xff1a;局部最优满足需求&#xff0c;排序后贪心分配 分发饼干 分发糖果 [区间问题]…

Web3.py 入门笔记

Web3.py 学习笔记 &#x1f4da; 1. Web3.py 简介 &#x1f31f; Web3.py 是一个 Python 库&#xff0c;用于与以太坊区块链进行交互。它就像是连接 Python 程序和以太坊网络的桥梁。 官方文档 1.1 主要功能 查询区块链数据&#xff08;余额、交易等&#xff09;发送交易与…

AI基础:数据可视化简易入门(Matplotlib和Seaborn)

Matplotlib是一个Python的2D绘图库&#xff0c;它以各种硬拷贝和跨平台的交互式环境生成出版质量级别的图形。 Seaborn是基于Python且非常受欢迎的图形可视化库&#xff0c;在Matplotlib的基础上进行了更高级别的封装&#xff0c;使作图更加方便快捷。 1 Matplotlib 1.1 通过…