SpringBoot的配置文件以及日志设置

news2024/11/20 20:31:44

在使用SpringBoot开发的过程中我们通常会用到配置文件来设置配置信息

以及使用日志来进行记录我们的操作,方便我们对错误的定位


配置文件的作用在于:设置端口,设置数据库连接信息,设置日志等等 

在SpringBoot中,配置文件必须要以application作为命名,

同时在SpringBoot中有两种配置文件格式

一种是application.properties,另一种是application.yml的格式

两种格式的区别在于properties是SpringBoot中默认的配置文件的格式

而yml格式支持多种语言的格式

以properties格式为例子:properties存储配置信息是以key-value的形式进行存储的

#配置项中设置端口号
server.port = 9090

#配置项中设置数据库的连接
spring.datasource.url = jdbc:mysql//127.0.0.1:3306/java?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = 8888

#配置项中设置日志
logging.level.com.example.demo = debug
logging.file=d:/work/demo.log

#配置项中设置对象中的属性
student.name = tom
student.id = 1
student.gender = man

properties格式的配置文件的缺点在于不能够支持多种语言,并且配置内容过于冗余

但是在springboot中properties的优先级是比yml要高的

而我们使用yml的形式就可以弥补properties的缺点了

#设置端口号
server:
  port: 9090

#设置字段的内容
mystr1: 你\n好
mystr2: '你\n好'
mystr3: "你\n好"

#设置对象的属性
student:
  id: 1
  name: 张三
  age: 18

# 日志级别的设置
logging:
  level:
    root: error
    com:
      example:
        demo:
          controller: trace
  file:
    path: D:\

上面提到的设置字段的内容,我们都是可以在class类里面进行调用的

不管是使用哪种配置文件都是使用 @Value(${xxxx})注解的形式进行调用

    @Value("${mystr1}")
    private String str1;

    @Value("${mystr2}")
    private String str2;

    @Value("${mystr3}")
    private String str3; //"xxx\nxxx" 只有这样才能进行换行

在yml中我们要想将字段进行换行打印就需要用到字符串以及转义字符,否则无法进行换行输出

我们还提到了在可以设置对象的属性进行注入

这个时候我们就需要在实体类中使用注解

@ConfigurationProperties("xxx") <-此处的xxx为配置文件中对象名称 

这样就可以进行属性注入了

@ConfigurationProperties("student")
@Controller
public class StudentController {
    private int id;
    private String name;
    private int age;
}

在实际开发的过程中我们通常有三个环境:开发环境、测试环境、生产环境

可能每个环境下我们的配置文件都不一样,但是代码是相同的

所以为了适配各个环境下的配置文件

我们可以创建一个公共的配置文件来调用不同环境下的配置环境

我们各个环境的配置文件都要以 application 开头然后加上各自的命名

比如开发环境:application-dev.yml 测试环境application-test.yml 生产环境application-prod.yml

在公共的配置文件 application.yml中只需要输入这段代码就可以调用到不同的配置环境了

#设置平台 比如此时我想设置成生产环境
spring:
  profiles:
    active: prod

讲完了配置文件我们来说说日志

我们可以使用日志来进行记录错误等信息,当然也可以记录程序的执行时间以及程序的操作人等等

实际上SpringBoot中内置了日志,我们每次在启动SpringBoot的时候都能看到一长串的日志内容

那么SpringBoot中的日志框架里面的内容可以分为:日志门面以及日志实现

日志门面就相当于是一个中间人,我们在调用日志门面以后日志门面会帮我们找到具体的日志实现的项目 ,在日志门面包括(SLF4J以及common-logging)

在日志中,日志的等级分为(从低到高进行排序):

[trace]:级别最低

[debug] :调试的时候进行打印的内容

[info]:普通打印信息

[warn]:警告信息但不影响使用

[error]:错误信息影响正常使用

[fatal]:不会打印出来,直接导致程序退出

我们可以在配置文件中设置我们想要看到的日志等级,比如

#yml格式下的日志配置

logging:
    level: #只查看error及以上的日志信息 
        root:error 

我们也可以设置某一个包在运行过程的日志提示,比如

#yml格式下的日志配置

logging:
    level: #只查看error及以上的日志信息 
        root:error 
        com: 
            example: #查看controller包底下在运行过程中trace及以上的日志信息 
                controller: trace

 那么现在再来讲讲应该怎么样使用日志

我们首先要实例化日志这个类然后再将需要打印日志的类

(比如我现在的UserController需要答应日志)

private static final Logger logger 
            = LoggerFactory.getLogger(UserController.class);

然后就可以正常使用了

    @RequestMapping("/sayHi")
    public String sayHi(){

        logger.trace("trace");        //打印一个trace日志 日志内容是trace
        logger.info("info");          //打印一个info日志 日志内容是info
        logger.warn("warn");          //打印一个warn日志 日志内容是warn
        logger.error("error");        //打印一个error日志 日志内容是error

        return "hello world";

    }

实际上我们如果调用Lombok这个框架的话

只需要加入 @Slf4j 这个注解就不需要再实例化日志对象了

然后日志对象的名称注意 一定是 log

接下来的步骤和正常使用没有区别

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

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

相关文章

vue基础知识五:请描述下你对vue生命周期的理解?在created和mounted这两个生命周期中请求数据有什么区别呢?

一、生命周期是什么 生命周期&#xff08;Life Cycle&#xff09;的概念应用很广泛&#xff0c;特别是在政治、经济、环境、技术、社会等诸多领域经常出现&#xff0c;其基本涵义可以通俗地理解为“从摇篮到坟墓”&#xff08;Cradle-to-Grave&#xff09;的整个过程在Vue中实…

前端性能优化——包体积压缩插件,打包速度提升插件,提升浏览器响应的速率模式

前端代码优化 –其他的优化可以具体在网上搜索 压缩项目打包后的体积大小、提升打包速度&#xff0c;是前端性能优化中非常重要的环节&#xff0c;结合工作中的实践总结&#xff0c;梳理出一些 常规且有效 的性能优化建议 ue 项目可以通过添加–report命令&#xff1a; "…

常见架构类型

目录 1.单机架构 2.应用数据分离架构 3.读写分离架构 4.冷热分离架构 5.垂直分库架构 6.微服务架构 7.容器编排架构 1.单机架构 单机架构是简单的将应用服务和数据库服务部署到同一台机器上。 缺点&#xff1a;存在很大的性能限制。 2.应用数据分离架构 引入负载均衡&a…

【Python】Web学习笔记_flask(6)——会话session对象

处理利用cookie来判断用户登录外&#xff0c;也可以使用session来判断用户是否登录 html代码和cookie对象的设置相同 from flask import Flask,request,render_template,make_response,session,url_for,redirectappFlask(__name__) app.secret_keyps1234567890 app.route(/) …

SpringBoot案例-员工管理-分页查询-实现

前言&#xff1a; 阅读本文前&#xff0c;请先浏览分页功能分析文章&#xff0c;文章传送门SpringBoot案例-员工管理-分页查询-分析_熵240的博客-CSDN博客 根据三层架构中各个层次的作用进行编码 功能接口的实现 控制层&#xff08;Controller类&#xff09; 具体关键代码如…

用好大模型,会写prompt才行,文心一言为例

实际上用文心一言已经有几个月了。一直没有写点什么。 对于用大模型&#xff0c;prompt的写法至关重要。今天水一个例子。 最开始&#xff0c;我想要让文心帮我提炼一个句子&#xff0c;顺带测试一下它的理解力 执行下面的步骤&#xff1a; 1 将下面由三个引号分隔的文本总结…

pg 简单查询语句

语法&#xff1a; 搜索语句&#xff1a; select (distinct&#xff08;去重&#xff09;) 内容&#xff08;*代表所有&#xff09; as 别名 from 表 注释&#xff1a; -- 快速查询&#xff1a;select 内容 AS 别名 没有表一般当做计算器来用

PLA: 语言驱动的开放词汇3D场景理解

论文&#xff1a;https://arxiv.org/abs/2211.16312 GitHub - CVMI-Lab/PLA: (CVPR 2023) PLA: Language-Driven Open-Vocabulary 3D Scene Understanding代码&#xff1a;GitHub - CVMI-Lab/PLA: (CVPR 2023) PLA: Language-Driven Open-Vocabulary 3D Scene Understanding 摘…

【RabbitMQ】消息队列-RabbitMQ篇章

文章目录 1、RabbitMQ是什么2、Dokcer安装RabbitMQ2.1安装Dokcer2.2安装rabbitmq 3、RabbitMQ入门案例 - Simple 简单模式4、RabbitMQ的核心组成部分4.1 RabbitMQ整体架构4.2RabbitMQ的运行流程 5、RabbitMQ的模式5.1 发布订阅模式--fanout 1、RabbitMQ是什么 RabbitMQ是一个开…

通用与垂直大模型之战:大模型驱动的商业智能变革之路

科技云报道原创。 是做通用大模型还是垂直大模型&#xff0c;这一个争论在“百模大战”的下讨论愈发热烈。 目前&#xff0c;以微软、谷歌、百度、阿里等为代表的发力于通用大模型的科技大厂&#xff0c;也都开始推动大模型在垂直领域的商业化落地。 比如说&#xff0c;微软…

【JAVA】变量的作用域与生存周期

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️初识JAVA】 文章目录 前言变量的作用域变量的生命周期局部变量全局变量 前言 变量&#xff0c;我们学习过程中逃不掉的知识&#xff0c;无论在哪种语言中我们都需要学会去合理的运用它&#xff0c;今…

电测知识分享——错过就要被淘汰掉?这个电子测试超重要项目你了解多少?

一、为什么准确性这么重要&#xff1f; 任何测试都会有误差的存在。假设我们现在有个项目&#xff1a;设计一个LNA&#xff0c;其噪声系数NF2dB.测试误差为0.5dB。这就意味着设计人员需将NF指标控制在1.5dB甚至更低&#xff0c;NF超1.5dB的产品在测试过程中就要被淘汰掉。如果…

ES6自用笔记

原型链 引用类型&#xff1a;__proto__(隐式原型)属性&#xff0c;属性值是对象函数&#xff1a;prototype(原型)属性&#xff0c;属性值是对象 ​​​​​​​ 相关方法 person.prototype.isPrototypeOf(stu) Object.getPrototypeOf(Object)替换已不推荐的Object._ _ pro…

【项目设计】负载均衡式在线OJ

&#x1f320; 作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《项目设计》 &#x1f387; 座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录 &#x1f449;项目地址&am…

自研的EtherCAT总线一拖四开环步进驱动器低成本方案

自研的EtherCAT总线一拖四开环步进驱动器&#xff0c;可以连接TwinCAT 欧姆龙 汇川PLC Codesys SOEM主站&#xff0c;IGH主站。 电机单轴驱动电流最大4A&#xff0c;可以带42/57/86电机。带12路数字输入&#xff0c;8路数字输出。 EtherCAT总线DC同步周期125us&#xff0c;支持…

“深入剖析Java多态:点燃编程世界火花“

White graces&#xff1a;个人主页 &#x1f649;专栏推荐:Java入门知识&#x1f649; &#x1f649; 内容推荐:“继承与组合&#xff1a;代码复用的两种策略“&#x1f649; &#x1f439;今日诗词:马踏祁连山河动,兵起玄黄奈何天&#x1f439; 快去学习 &#x1f338;思维导…

8月14日上课内容 LVS负载均衡的群集

知识点&#xff1a; 本章结构: 企业群集概述 集群的含义&#xff1a; 1、群集的含义 ①、Cluster、集群、群集 ②、由多台主机构成&#xff0c;但对外只表现为一个整体&#xff0c;只提供一个访问入口&#xff08;域名与IP地址&#xff09;&#xff0c;相当于一台大型计算机。…

重要日期提醒软件是哪个?帮你记住重要日程的提醒软件

生活、工作、学习中有众多重要的日期&#xff0c;如生日、纪念日、会议、截止日期等&#xff0c;它们承载着我们珍贵的回忆和重要的任务&#xff0c;因此绝对不能忘记。然而在信息爆炸的时代&#xff0c;我们的生活和工作节奏都是非常快的&#xff0c;时常会忘记这些重要的日程…

关于git执行提交报错问题

1.在执行git中 执行git init 执行 git add . 执行git commit -m “first commit” 时会出现 git config --global user.email "youexample.com" git config --global user.name "username" 这个问题是由于在git中没有设置默认的user跟emali导致需要手…

Cesium加载Supermap的wmts服务

最近使用cesium 加载supermap的wmts 服务&#xff0c;多次遇到加载异常与白页面问题&#xff0c;纠结好久最后才搞定[特此记录] 1、首先找到方法加载wmts 的api 文档 官方提示使用WebMapTileServiceImageryProvider加载wmts 2、然后编辑加载代码 //1.新建ImageryProviderlet…