[SpringBoot]关于Profile配置文件关于Slf4j日志

news2025/1/6 20:32:59

关于Profile配置文件

在Spring系列框架中,关于配置文件,允许同时存在多个配置文件(例如同时存在a.ymlb.yml等),并且,你可以按需切换某个配置文件,这些默认不生效、需要被激活才生效的配置,称之为Profile配置。  

在Spring Boot项目中,Profile配置的文件名必须是application-自定义名称.properties(或使用YAML的扩展名),例如:application-a.ymlapplication-b.yml,并且,这类配置文件默认就是没有激活的。

通常,关于“自定义名称”部分的惯用名称有:

  • dev:表示开发环境

  • test:表示测试环境

  • prod:表示生产环境(项目上线)

当然,你也可以根据你所需要的环境或其它特征来处理“自定义名称”部分。  

在Spring Boot项目中,application.properties(或使用YAML的扩展名)是始终加载的配置文件,当需要激活某个Profiel配置文件时,可以在application.properties中配置:  

spring.profiles.active=自定义名称

 例如:

在开发实践中,需要学会区分哪些配置属性是固定的,哪些是可能调整的,然后,把不会因为环境等因素而发生变化的配置写在application.properties中去,把可能调整的配置写在Profile文件中。

例如,在application.yml中配置(以下配置中不包含连接数据库的URL、用户名、密码):

spring:
  profiles:
    active: dev
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      initial-size: 5
      max-active: 10
    
mybatis:
  mapper-locations: classpath:mapper/*.xml
  
knife4j:
  enable: true

并且,在其它Profile配置中补充可能调整的配置,例如在application-dev.yml中配置:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mall_pms?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    username: root
    password: root

另外,通过spring.profiles.active激活配置时,此属性的值可以使用逗号分隔来激活多个配置,例如:

spring.profiles.active=dev,test

如果同时激活的配置中,有相同的属性,但属性值并不同,以偏后的Profile配置文件中的配置值为准,按照以上代码,则以test中的配置为准!

另外,所有Profile配置的优先级都高于application.properties


关于Slf4j日志

在开发实践中,应该将数据的关键变化、关联的处理流程记录下来,以便于出现问题时可以辅助排查问题!  

 注意:在开发实践中,禁止使用System.out.println()的做法输出内容(测试代码除外),主要原因有:

  • 不易于编写代码

    • 如果输出的结果中存在较多的字符串与变量的拼写,代码的可读性非常差

  • 执行效率非常低下

    • 字符串的拼接效率非常低

  • 无论什么情况下都会显示

    • 也许某些输出的数据是敏感的,在开发过程中输出这些数据是为了便于调试,但是,在生产过程中不应该被看到

应该使用日志框架,通过输出日志的方式,来记录相关信息!

在Spring Boot框架的基础依赖项(spring-boot-starter)中已经包含日志框架的依赖项, 所以,并不需要专门的去添加日志框架的依赖项,是可以直接使用的!

在添加了Lombok依赖项后,可以在任何类上添加@Slf4j注解,则Lombok会在编译期自动在此类中声明名为log的变量,通过此变量调用方法即可输出日志。

日志是有显示级别的,根据日志内容的重要程度,从可以不关注,到必须关注,依次为:

  • trace:跟踪信息,例如记录程序执行到了哪个环节,或哪个类、哪个方法等

  • debug:调试信息,通常输出了一些数据值,用于观察数据的走向、变化过程

  • info:一般信息,通常不涉及隐私或机密,即使被他人看到也不要紧的

  • warn:警告信息,通常是可能存在某种问题,但却不影响程序的执行

  • error:错误信息

在使用log变量输出日志时,可以调用以上5个级别对应的方法,即可输出对应级别的日志!例如调用log.info()方法输出的就是info级别的日志,调用log.error()方法输出的就是error级别的日志。  

在日志框架中,输出每个级别的方法的参数列表都有相同的版本,例如存在:  

void info(String message);
void info(String message, Object... args);

 就还有:

void trace(String message);
void trace(String message, Object... args);

void debug(String message);
void debug(String message, Object... args);

void warn(String message);
void warn(String message, Object... args);

void error(String message);
void error(String message, Object... args);

在普通项目中,默认显示debug级别的日志,则debug级别及更加重要级别的日志都会显示出来,即trace级别不会被显示!

在Spring Boot项目中,默认显示info级别的日志!

在Spring Boot项目中,可以通过配置文件中的logging.level.根包名[.类名]属性来调整日志的显示级别!

提示:以上logging.level.根包名[.类名]中的中括号部分是可选的!

 例如配置为:

logging:
  level:
    cn.tedu.csmall.product: trace

cn.tedu.csmall.product包及其子孙包下所有的类中输出的日志的显示级别都将是trace

在输出日志时,如果需要输出一些变量的值,应该优先使用参数列表为(String message, Object... args)的方法,例如:

int x = 1;
int y = 2;
log.info("x = {}, y = {}, x + y = {}", x, y, x + y);

需要注意:SLF4j日志框架只是一个日志标准,并没有具体的实现日志功能,而具体的功能是由logbacklog4j等日志框架实现的。

SLF4j日志框架有一个接口Logger接口,定义了有这些方法,但是这些方法它没有自己实现,它是调用了log4j来实现的,这样做的好处是它约定了日志框架的API,有什么方法,有什么参数列表,如果后面log4j不好用,那就再换调用其他的框架,但是我们已经写好的代码不用变,因为SLF4j日志的API没有变。和接口编程是差不多的一个道理。

如果要问,SLF4j和log4j的区别,一个是标准,一个是实现了具体的功能,然后这个标准包含了接口,接口调用了log4j里面的方法来实现的。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/602688.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ProtoBuf】protobuf序列化协议

Protobuf介绍 Protobuf (Protocol Buffers) 是谷歌开发的一款无关平台,无关语言,可扩展,轻量级高效的序列化结构的数据格式,用于将自定义数据结构序列化成字节流,和将字节流反序列化为数据结构。所以很适合做数据存储…

容器底层实现技术

一、Namespace 和 Cgroup 1、容器技术发展历史 2、Docker 容器实现原理 1. Docker 容器在实现上通过 namespace 技术实现进程隔离, 通过Cgroup 技术实现容器进程可用资源的限制 3、Namespace Namespace :命名空间 1. 作用:资源隔离 2. 原理&…

web前端课程作业设计:个人简历

一.说明 今天博主的web前端选修课结课了,期末大作业也提交了,今天写一篇博客把我的大作业分享给大家。 二.题目 1. 大作业题目 个人简历主页设计 2. 内容要求 应尽量包含以下内容: 包含个人基本信息、教育背景、个人风采、与我联系四块…

企业四要素核验-企业四要素核验接口-api接口

接口地址: https://登录后显示/pyi/184/358(支持:http/https)) 在线查询:https://www.wapi.cn/api_detail/184/358.html 网站地址:https://www.wapi.cn 返回格式:json,xml 请求方式:GET,POST 请求说明: …

【实用篇】Elasticsearch01

分布式搜索引擎01 – elasticsearch基础 1.初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容 例如: 在GitHub搜索…

智慧公厕系统如何通过物联网技术提高公厕的管理效率

智慧公厕系统可以通过物联网技术,实现公共卫生间的智能化管理和服务,提高管理效率。本文将详细介绍智慧公厕系统如何通过物联网技术提高公共卫生间的管理效率,从硬件、软件、系统等方面逐一分析。 XP-智慧厕所方案-HYF20230328(16…

工业企业为什么要用边缘计算网关?

在我们进入智能制造和工业4.0的新时代,工业企业的数据需求正急速增长。传感器,机器和设备每分钟都在产生大量数据,它们对实时处理和分析的需求比以往任何时候都要强烈。这就是为什么工业企业需要边缘计算网关。 边缘计算网关在物联网架构中担…

大数据:Apache hive分布式sql计算平台,hive架构,hive部署,hive初体验

大数据:Apache hive分布式sql计算平台 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle&a…

Java002——JDK的安装以及配置环境变量

为什么要安装jdk 1、JDK 全称 Java Development Kit,意为 Java 开发工具。,要想开发java程序就必须安装JDK。没有JDK的话,无法编译运行Java程序。 2、JDK包含的基本组件包括以下文件:   javac.exe,用于编译java文件&#xff0c…

不经意传输(OT)了解

概述 OT,不经意传输,常被大量用于安全多方计算中,能够很大程度决定一个SMPC协议的效率。它的核心概念是接收方可以从发送方(持有秘密信息)手中选择性接收自己想要的信息而接收方对所选择的信息内容一无所知。目前有2-…

乐谱文件转换,支持批量mscz、mxl、musicxml转mp3等格式

我是一个喜欢听音乐的人,每天都会在路上听着歌放松自己。但是有时候想要听的歌并没有下载下来,或者格式不兼容。 最近我发现了一个神奇的软件——mscz转mp3,可以把乐谱文件转成mp3格式! 软件界面简洁明了,使用也非常…

js的Bom操作

1.认识Bom ◼ BOM:浏览器对象模型(Browser Object Model)  简称 BOM,由浏览器提供的用于处理文档(document)之外的所有内容的其他对象;  比如navigator、location、history等对象&#xff1…

YOLOv5改进系列(6)——替换主干网络之 ShuffleNetV2

【YOLOv5改进系列】前期回顾: YOLOv5改进系列(0)——重要性能指标与训练结果评价及分析 YOLOv5改进系列(1)——添加SE注意力机制

预约直播|揭秘鸿蒙全新流量阵地,元服务带来的体验变革

【导读】 在PC 互联网到移动互联网的演进过程,随着人们对交互和信息获取的智能化要求越来越高,移动终端上的应用生态发展到今天也面临着变革。传统厚重的App,功能齐全,但开发成本高、周期长,且存在搜索、安装、卸载等…

Mybatis-Plus实战

文章目录 #简介#特性#支持数据库总结1、Mybatis-Plus常用注解2、[条件构造器](https://www.baomidou.com/pages/10c804/#abstractwrapper)2.1 介绍2.2 条件 3、Mybatis-Plus属性配置3.1 Mybatis-Plus常用配置项3.2 mybatis-plus.configuration. 下配置项3.3 配置小结 4、CRUD实…

javascript基础十四:解释下什么是事件代理?应用场景?

一、是什么 事件代理,俗地来讲,就是把一个元素响应事件(click、keydown…)的函数委托到另一个元素 前面讲到,事件流的都会经过三个阶段:捕获阶段 -> 目标阶段 -> 冒泡阶段,而事件委托就是…

MFA多因素认证:保护你的邮箱、VPN等账户免遭黑客入侵

多因素认证(MFA)是防范黑客攻击的重要防线之一。在密码被越来越容易被破解的情况下,多因素认证让你的账户更加安全。本文将详细讲解多因素认证是什么、如何工作以及如何设置多因素认证来保护你的账户。 什么是MFA多因素认证 简单地说&#xf…

AIGC+开放式社交,为年轻人注入了新的“Soul”?

5月21日全国助残日,Soul App举办了一场与众不同的线上公益活动,邀请视障用户担任“见习解忧师”,诉说世界更多角落“不完美”的故事,展示人生更多可能,传递温暖与爱。 参与此次派对的“见习解忧师”都是Soul平台上充满…

OTP动态口令身份认证的多种形式

密码无处不在,但却出了名的弱。因此需要新的工具和技术来减少或减轻账户被接管(ATO)的风险。OTP动态口令身份认证的主要目的就是要确保该用户的身份足够可信。现在,最常见的方法是通过增加某种认证令牌来提供MFA多因素认证。 令牌…

Linux:日志文件分析

日志文件的分类 1内核及系统日志 由系统服务syslog统一进行管理,日志格式基本相似 2 用户日志:记录系统用户登录及退出系统的相关信息 3 程序日志;由各种应用程序独立管理的日志文件,记录格式不统一 日志文件 日志保存位置&#…