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

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值