关于 spring boot 的 目录详解 和 配置文件 以及 日志

目录

配置文件 

        spring boot 的配置文件有两种格式,分别是 properties 和 yml(yaml)。这两种格式的配置文件是可以同时存在的,此时会以 properties 的文件为主,但一般都是使用同一种格式的。

格式

properties 语法格式:key=value

        配置项的分类:1. 系统配置项,比如 server.port,这是系统规定的。2. 用户自定义配置(非系统配置项),这是程序猿自定义的。

        读取配置文件:@Value(“${key}”)的方式。 如果不是 ${key} 的格式,那么程序会认为 key 是你想要表示的字符串,而不会根据 key 找到对应的 value。

优点

        1. 系统默认的配置文件,生成项目的时候就自带了

        2. properties 的优先级比 yml 高

        3. 易读性高,易上手,不容易出错

缺点 

        写法比较冗余(比如要连接数据库时 spring.datasource 一行都不能少)

yml 语法格式:key: value

        跟 properties 没啥区别,语法上 yml 更加简洁,特别是配置很多的时候 yml 就显得清晰明了,易读性变得更好。

因为 yml 的这种灵活的格式,所以可以表现的数据类型也更多,比如可以表示一个对象:

        读取的时候,@ConfigurationProperties("key")、@Component、@Setter 这三个注解少一个程序就运行不起来。

properties 和 yml 的对比

        ● properties 是以 key=value 的形式配置的键值类型的配置⽂件,⽽ yml 使⽤的是类似 json 格式的树形配置⽅式进⾏配置的,yml 层级之间使⽤换⾏缩进的⽅式配置,key 和 value 之间使⽤“: ”英⽂冒号加空格的⽅式设置,并且空格不可省略。
        ● properties 为早期并且默认的配置⽂件格式,但其配置存在⼀定的冗余数据,使⽤ yml 可以很好的解决数据冗余的问题。
        ● yml 通⽤性更好,⽀持更多语⾔,如 Java、Go、Python 等,如果是云服务器开发,可以使⽤⼀份配置⽂件作为 Java 和 Go 的共同配置⽂件。
        ● yml ⽀持更多的数据类型。

日志

        日志可以用来发现和定位报错问题。也可以记录⽤户登录⽇志,⽅便分析⽤户是正常登录还是恶意破解⽤户。记录系统的操作⽇志,⽅便数据恢复和定位操作⼈。记录程序的执⾏时间等。

日志打印

1. 先得到日志对象(选择 slf4j )

2. 使用日志对象提供的方法打印日志

日志级别

日志级别级别描述及应用场景举例
trace
微量,少许的意思,级别最低;
系统内部细微流程追踪,如函数内多次循环中每次的具体变化
debug
需要调试时候的关键信息打印;
开发中调试具体代码逻辑、变量状态等,如某段复杂算法执行细节
info
普通的打印信息(默认⽇志级别);
系统启动、重要业务流程关键节点记录,如服务成功开启
warn
警告,不影响使⽤,但需要注意的问题;
资源接近阈值、潜在的数据问题等,如缓存命中率偏低
error
错误信息,级别较⾼的错误⽇志信息;
数据处理错误、文件操作失败等,如读取文件异常
fatal
致命的,因为代码异常导致程序退出执⾏的事件;
关键资源耗尽、严重错误导致程序终止,如内存溢出导致崩溃

设置日志级别

        在配置文件里面设置:

日志持久化

        把⽇志保存下来的过程就叫做持久化,就是以前的信息都保留下来了。想要将⽇志进⾏持久化,只需要在配置⽂件中指定⽇志的 存储路径 或者是指定⽇志 保存文件名 之后,Spring Boot 就会将控制台的⽇志写到相应的⽬录或⽂件下了。

配置日志文件的文件名:

配置日志文件的存储路径:

        当项目运行的时间足够长,生成的日志信息内存大于 10 MB 的时候,spring boot 就会自动生成一个新的日志文件(官方默认的,大小也可以自己设置)。

更简单的日志输出—lombok

1. 确保 添加了 lombok 框架⽀持。
2. 使用 @slf4j 注解输出日志。
package com.example.springbootdemo.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController // @Controller + @ResponseBody 的合体
@Slf4j // 给当前类中添加一个叫做 log 的日志对象(= SLF4J 里面提供 Logger)
public class LogController {

    @RequestMapping("/log/say")
    public String say() {
        log.info("我是 log 的 info");
        log.error("我是 log 的 error");
        return " log say ";
    }

}

使用 @slf4j 这个注解就不用写长长的 private static final Logger log = LoggerFactory.getLogger(TestController.class); 这一串了。

关于 Lombok 注解的原理:在编译的过程中,Lombok 会自动地往代码添加注解所对应的部分。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Web UI自动化测试_Selenium+Python

一、概述: 1.1 Selenium是什么 Selenium 是一个基于浏览器的自动化工具,可以跨平台、跨浏览器使用。 Selenium 主要包括三部分: 1、Selenium IDE: Firefox 浏览器的一个插件(扩展),它可以进行…

搭建数字化营销平台带来的一系列积极影响!

在当今数字化时代,搭建数字化营销平台具有一系列令人瞩目的积极影响。 这种平台的搭建,能够有力地促进形成良好的产业生态。就如同搭建蚓链数字化生态营销系统这般,它强化了产业间的沟通与协作,使得各个环节紧密相连&#xff…

UI学习笔记(一)

UI学习 一:UIView基础frame属性隐藏视图对象:UIView的层级关系 二:UIWindow对象三:UIViewController基础UIViewController使用 四:定时器与视图移动五:UISwitch控件六:滑动条和进度条七&#xf…

python数据分析-ZET财务数据分析

一、公司背景 中兴通讯股份有限公司是一家总部位于中国深圳的跨国公司,致力于为全球客户提供通信设备和解决方案。公司成立于1985年,自成立以来一直致力于为客户提供创新的通信技术和服务。中兴通讯的业务涵盖多个领域,包括但不限于高端路由…

MySQL数据库操作基础(增删查改)

数据库操作基础(增删查改) 1.插入 1.1往数据表中插入一条数据 insert into 表名 values (值,值,值...)此处列出的这些值的数目和类型 要和表的相对应 1.2指定列插入 insert into 表名(列名) values (值);1.3一次插入多个记录 insert into 表名 values (值),(值)...一次插入…

weditor安装时提示This is an issue with the package mentioned above, not pip

报错如下: note: This error originates from a subprocess, and is likely not a problem with pip. error: metadata-generation-failed Encountered error while generating package metadata. ╰─> See above for output. note: This is an issue with …

matlab BP神经网络

clear clc % 准备数据 inputs rand(10, 100); % 100组输入,每组10个特征 outputs rand(1, 100); % 100组输出,每组1个输出值 % 将数据分成训练集和测试集 trainRatio 0.8; valRatio 0.1; testRatio 0.1; [trainInd, valInd, testInd] divid…

分布式一致性理论

分布式一致性理论 1.数据库事务ACID理论 为保证事务正确可靠而必须具备的四个核心特性。这四个特性分别是:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(D…

【Python报错】已解决TypeError: can only concatenate str (not “int“) to str

解决Python报错:TypeError: can only concatenate str (not “int”) to str 在Python中,字符串连接是常见的操作,但如果你尝试将整数(int)与字符串(str)直接连接,会遇到TypeError: …

【机器学习基础】Python编程08:五个实用练习题的解析与总结

Python是一种广泛使用的高级编程语言,它在机器学习领域中的重要性主要体现在以下几个方面: 简洁易学:Python语法简洁清晰,易于学习,使得初学者能够快速上手机器学习项目。 丰富的库支持:Python拥有大量的机器学习库,如scikit-learn、TensorFlow、Keras和PyTorch等,这些…

四十四、openlayers官网示例Geographic Coordinates解析——在地图上添加弹窗,点击显示图形信息

使用Overlay在地图上添加弹窗,点击控制显隐。 初始化图层的时候,添加一个矢量的点数据到地图上,在new Feature时添加一些自定义属性。 const place [-110, 45];const point new Point(place);const map new Map({target: "map"…

应用层——HTTP协议(自己实现一个http协议)——客户端(浏览器)的请求做反序列化和请求分析,然后创建http向响应结构

应用层:之前我们写的创建套接字,发送数据,序列化反序列化这些都是在写应用层 我们程序员写的一个个解决我们实际问题, 满足我们日常需求的网络程序, 都是在应用层 之前的网络计算机是我们自定义的协议:传输的数据最终是什么样的结…

概率论与数理统计,重要知识点——全部公式总结

二、一维随机变量及其分布 五个分布参考另外一篇文章 四、随机变量的数字特征 大数定理以及中心极限定理 六、数理统计

基于SpringBoot+Vue单位考勤系统设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,还…

【SkyWalking】使用PostgreSQL做存储K8s部署

拉取镜像 docker pull apache/skywalking-ui:10.0.1 docker tag apache/skywalking-ui:10.0.1 xxx/xxx/skywalking-ui:10.0.1 docker push xxx/xxx/skywalking-ui:10.0.1docker pull apache/skywalking-oap-server:10.0.1 docker tag apache/skywalking-oap-server:10.0.1 xxx…

K-BAT01,K-CU01和利时卡件

K-BAT01,K-CU01和利时卡件。现场控制站下装与在线调试。9二、组态流程:操作站组态控制站组态新建工程控制站用户组态历史站组态下装现场控制站下装历史站下装操作员站10三、组态详解:1、K-BAT01,K-CU01和利时卡件。新建工程:打开工程总控&…

SAP HCM HR_PAD_HIRE_EMPLOYEE 自定义信息类型字段保存问题

导读 INTRODUCTION SAP HCM入职程序:SAP HCM入职程序有两个一个是HR_PAD_HIRE_EMPLOYEE一个是HR_MAINTAIN_MASTERDATA,前面的函数是SAP为新框架开发的,后面函数是旧的逻辑,这两个函数的在于底层的结构不一致,对于自定…

Three.js——粒子效果、粒子水波、粒子组成立方体

个人简介 👀个人主页: 前端杂货铺 ⚡开源项目: rich-vue3 (基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL) 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 &#x1…

Linux卸载RocketMQ教程【带图文命令巨详细】

巨详细Linux卸载RocketMQ教程 #查询rocketmq进程 ps -ef | grep rocketmq #杀掉相关进程 kill -9 进程id #查找安装目录 find / -name runbroker.sh #删除rocketMQ目录 rm -rf 安装目录框起来的就是进程id,全部杀掉 这里就是我的安装目录,我的删除命令…

【进程调度的基本过程】初步认识进程和线程的区别与联系:计算机是如何工作的

​ 🔥个人主页: 中草药 🔥专栏:【Java】登神长阶 史诗般的Java成神之路 🐺一.冯诺依曼体系结构 认识计算机的祖师爷 -- 冯诺依曼 冯诺依曼(John von Neumann,1903年12⽉28⽇-1957年2⽉8⽇&…