关于 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 )
  1. 使用日志对象提供的方法打印日志

日志级别

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

设置日志级别

在配置文件里面设置:

日志持久化

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

配置日志文件的文件名:

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

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

更简单的日志输出---lombok

  1. 确保 添加了 lombok 框架⽀持。
  2. 使用 @slf4j 注解输出日志。
java 复制代码
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 会自动地往代码添加注解所对应的部分。

相关推荐
SAP学习成长之路3 分钟前
如何在 Eclipse 中调试ABAP程序
java·开发语言·ide·eclipse·sap·abap
尘浮生11 分钟前
Java项目实战II基于Java+Spring Boot+MySQL的智慧养老中心管理系统(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·mysql·微信小程序·maven
克鲁德战士27 分钟前
【Java并发编程的艺术3】Java内存模型(下)
java·开发语言·redis
爱上语文29 分钟前
Maven快速入门及其POM
java·maven
ZmyCoder38 分钟前
SpringBoot中忽略实体类中的某个属性不返回给前端的方法
java
哎呦没39 分钟前
英语知识网站开发:Spring Boot框架技巧
spring boot·后端·性能优化
是小博同学鸭39 分钟前
【面向对象的程序设计——集合框架】主要接口
java·开发语言
ZmyCoder39 分钟前
springboot项目使用maven打包,第三方jar问题
spring boot·maven
世间万物皆对象43 分钟前
Spring Boot Web应用开发:数据访问
java·数据库·spring boot
顽疲1 小时前
springboot vue 开源 会员收银系统 (9) 库存管理 结算时扣库存
vue.js·spring boot·后端