当前位置: 首页 > news >正文

关于 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.lryc.cn/news/366454.html

相关文章:

  • 如何删除电脑端口映射?
  • xiaolingcoding 图解网络笔记——基础篇
  • Docker 容器 mysql 配置主从
  • 64. UE5 RPG 创建新的双手攻击怪物
  • (求一个整数各位数的和)编写程序,读取一个在0和1000之间的整数,并将该整数的各位数字相加。例如:整数是 932,各位数字之和为14。
  • 大模型参加高考,同写2024年高考作文,及格分(通义千问、Kimi、智谱清言、Gemini Advanced、Claude-3-Sonnet、GPT-4o)
  • 【因果推断python】24_倾向得分2
  • 部件库(Widget Factory)
  • tomcat启动闪退解决办法
  • OpenStack云平台管理
  • 内部类(超详细)
  • Android的SELinux详解
  • R语言中的列表list
  • 10、有条件提前退出关键字Return From Keyword If【robot framework】
  • JAVA开发的一套(智造制造领航者云MES系统成品源码)saas云MES制造执行系统源码,全套源码,支持二次开发
  • 探究JSON和XML:两种常见的数据交换格式之异同
  • SQL查询的优化方案
  • 【C语言题解】1、写一个宏来计算结构体中某成员相对于首地址的偏移量;2、写一个宏来交换一个整数二进制的奇偶位
  • LabVIEW阀性能试验台测控系统
  • Flutter 中的 LayoutBuilder 小部件:全面指南
  • webman中创建udp服务
  • Vue 学习笔记 总结
  • 云计算导论(3)---分布式文件系统
  • 后端进阶-分库分表
  • Apple开发者应用商店(AppStore)描述文件及ADHOC描述文件生成
  • 【Git】修改设置 git 的 username、email
  • python脚本打包为exe并在服务器上设置定时执行
  • STM32-呼吸灯仿真
  • 【AI基础】第三步:纯天然保姆喂饭级-安装并运行chatglm2-6b
  • Spring Security系列之Handler