关于 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 会自动地往代码添加注解所对应的部分。

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

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

相关文章

小程序中用于跳转页面的5个api是什么?区别

小程序中用于跳转页面的5个API及其区别如下: wx.navigateTo(options) 功能:保留当前页面,跳转到应用内的某个页面,使用wx.navigateBack可以返回到原页面。特性:可以打开新的页面,新页面可以是tabBar页面&a…

【Python】selenium 点击某个按钮 click() 出现的报错问题--ElementClickInterceptedException(全!)

写在前面: 我们在使用selenium 点击某个元素时或者获取find_element的某个网页元素时,总会遇到一些问题。本人经验是,最直接的方法是用try_except 报错,直接绕过问题,可以直接看第一条。如果有兴趣具体解决&#xff0c…

[Algorithm][动态规划][01背包问题][模板 背包][分割等和子集]详细讲解 +何为背包问题?

目录 0.何为背包问题?1.模板 背包1.题目链接2.算法原理详解3.代码实现 2.分割等和子集1.题目链接2.算法原理详解3.代码实现 0.何为背包问题? 背包问题:有限制条件下的"组合问题" 你有一个背包,地上有一堆物品&#xff…

ASP .NET Core 中的 Autofac 依赖注入

介绍 Autofac 是适用于 .NET 应用程序(包括 ASP.NET Core)的流行依赖注入 (DI) 容器。Autofac 等 DI 容器通过提供注册和解析依赖关系的方法来帮助管理应用程序不同组件之间的依赖关系。 为什么需要Autofac,它能实现什么? 控制…

交错数组知识点

基本概念 交错数组是数组的数组,每个维度的数量可以不同。 注意:二维数组的每行的列数相同,交错数组每行的列数可能不同。 数组的申明 //变量类型[][] 交错数组名; int[][] arr1;//变量类型[][] 交错数组名 new 变量类型[行数][]; int[][…

四十三、openlayers官网示例Freehand Drawing解析——在地图上自由绘制图形

想要在地图上绘制自由图形,只需要在new Draw的时候多加一个配置项就行。 function addInteraction() {const value typeSelect.value;if (value ! "None") {draw new Draw({source: source,type: typeSelect.value,freehand: true, //是否自由绘制});ma…

在当前页面拿到抽屉弹窗页面中从后端返回的值 #Vue3 #两个.vue页面之间传值问题

在当前页面拿到抽屉弹窗页面中从后端返回的值 #Vue3 #两个.vue页面之间传值问题 *解决方法一: 将抽屉弹窗里从后端返回得到的值缓存在浏览器中,在当前页面中从浏览器中获取该值。 (原理其实就是借助第三个盒子来传递一下值,太小学…

HIK录像机GB28181对接相机不在线问题随笔

一、问题现象 【设备信息】型号:DS-8664N-I16-V3 V4.63.000 build 230412 【问题现象】HIK录像机使用GB28181对接异常相机无法正常上线,对接HIK相机可以正常上线。 【现场拓扑】现场拓扑如下 NVR侧使用固定公网IP地址。IPC侧使用家用宽带的方式&…

第R3周:天气预测

🍨 本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 | 接辅导、项目定制 🚀 文章来源:K同学的学习圈子 目录 我的环境 语言环境:python3.8.18编译器:jupyter not…

pikachu靶场(File Inclusion(文件包含)通关教程)

1.File Inclusion(local)本地文件包含 1.1打开网站,发现有个下拉框,随便选择一个,然后点击提交 1.2发现图中有个参数变了,其他的也会变,猜测这里可能有其他隐藏的文件 1.3直接进行抓包 ,右键发送到爆破模…

LeetCode | 1470.重新排列数组

class Solution(object):def shuffle(self, nums, n):""":type nums: List[int]:type n: int:rtype: List[int]"""result []for i in range(n):result.append(nums[i])result.append(nums[i n])return result这题很容易想到的就是遍历整个数组…

拼多多第37期:拼多多单品裂变起爆2.0(17节课)

课程下载:拼多多第37期:拼多多单品裂变起爆2.0(17节课)-课程网盘链接提取码下载.txt资源-CSDN文库 更多资源下载:关注我。 课程内容: 01.《拼多多单品裂变起爆2.0》非标品类成功操作案例.mp4 02.《拼多…

【Python爬虫单点登录实战】PyExecJS破解慧职教:过河源技术学院单点登录统一身份认证

目录 前言大致分析PyExecJS 使用案例pip 安装:Demo:输出:案例1.访问目标网站的登录页面并查看源码2.将js放到和py脚本同一级目录下3. 编写Python脚本来调用js破解单点登录实战提取密钥参数清洗数据登陆测试单点登录获取ticket获取jsessionid获取token成功我的专栏前言 博主提供…

小程序中 使用 UDPSocke通讯的流程

小程序使用UDPSocket与设备通讯的步骤可以归纳如下: 创建UDPSocket实例: 使用wx.createUDPSocket()方法创建一个UDP Socket实例。 绑定端口: 调用UDPSocket.bind(number port)方法,绑定一个系统随机分配的可用端口,或…

java 子网掩码和IP计算起始IP和终止IP工具类

java 子网掩码和IP计算起始IP和终止IP工具类 1.根据掩码位数获取掩码 2.根据ip地址和掩码获取起始IP 3.根据ip地址和掩码获取终止IP 4.ip转换Long 5.实际可用ip数量 public class NetAddressUtils {/*** 根据掩码位数获取掩码*/public static String getNetMask(String ma…

写一个经典的java引用传递的例子

private fun getRaidType(): List<SelectItem<String>> {var list raidTyperaidType.forEach{Log.i("DHG","raidType is $it")}list.forEach{Log.i("DHG","list raidType is $it")}viewModel.diskInfo?.value?.forEach…

SOLIDWORKS参数化设计插件 慧德敏学

SOLIDWORKS软件是法国达索公司的产品&#xff0c;最初是满足欧美一些工程师产品设计需要而开发的&#xff0c;并没有考虑中国的企业实际情况。我们为满足国内客户的需要&#xff0c;对SOLIDWORKS进行了二次开发&#xff0c;借助SolidKits.AutoWorks参数化工具&#xff0c;通过一…

.Net Core 8.0 IIS部署遇到奇怪的部分接口报404的问题解决

本地运行没问题&#xff0c;部署到IIS后&#xff0c;部分接口报404&#xff0c;其它接口都正常。 经和群里讨论&#xff0c;大概意思是接口返回数据比较大的时候&#xff0c;就会出现这个问题。 查看事件查看器&#xff0c;发现应该是数据过大时使用了临时文件夹&#xff0c;…

2024高考作文引发的人工智能争议

又是一年高考季&#xff0c;多少学子的修行成果也在这这一刻迎来了终极检验&#xff0c;多少学子的梦也在这一刻拉开了揭晓序幕&#xff0c;多少学习的命运也在这一刻迎来了人生中的第一次转变。每年的高考不仅是学子们的人生大事&#xff0c;也是多少父母的热切期望&#xff0…

VSCode函数无法跳转问题,小插件安装说明

1、问题&#xff1a; VSCode中程序想查看某函数内部&#xff0c;无法跳转。 2、解决办法&#xff1a; 安装C/C GNU Global插件即可解决 3、安装操作步骤&#xff1a; 1&#xff09;方式1&#xff1a; 可在VSCode中左侧栏中&#xff08;图中1&#xff09;&#xff0c;搜索…