您现在的位置是:首页 >学无止境 >Spring Boot配置文件及日志信息网站首页学无止境
Spring Boot配置文件及日志信息
目录
前言:
使用Spring Boot框架就是为了更加简单快速的使用Spring容器。Spring Boot就是Spring的脚手架,底层就是Spring容器。
Spring Boot优点
1)快速集成框架:快速添加外部jar包。
2)内置web框架:可以直接运行。
3)快速部署:不依赖任何web容器。
4)抛弃繁琐的xml格式的配置文件。
5)支持更多的监控指标:可以更加容易且直观观察到项目运行情况。
配置文件
Spring Boot默认配置文件为properties格式的文件。我们可以添加yml(yaml)格式的配置文件。两种配置文件写法差异很大。
properties是key - value的形式,而yml类似于json的格式。两种配置文件是不同时代的产物,各有千秋。
配置文件格式
1)properties
2)yml(yaml)
注意:
1)两种配置文件从功能上来讲是可以同时存在的,但企业会规定使用某一种配置文件(规范)。
2)如果同一个项目出现两种配置文件的话,那么以properties为主(毕竟是Spring Boot默认格式)。
读取配置文件
1)不论是properties,还是yml格式的配置文件都使用@Value("${key}")注解。它会找到配置文件中对应的key的value值,赋值到当前属性中。
2)yml格式读对象:@ConfigurationProperties("对象名")。前提需要一个类,属性包含yml中对象属性,提供set方法,让spring操作(当然也需要托管到spring中)。Spring Boot就可以通过set方法将配置文件中的属性设置到当前类中。
yml配置文件
Java代码中的实体类
properties配置文件格式
key=value
配置项分类:
1)系统配置项,比如servler.port/spring.datasource.url...。
可查看更多的系统配置项。
2)用户自定义配置(key用户自定义)。
properties优缺点分析
优点:
1)系统默认的配置文件。
2)properties优先级比yml高。
3)格式简单,不容易出错。
缺点:
写法比较冗余(有等级之分,可能前面等级一致,那么不同的配置项就需要写多次前面部分的配置项)。
yml配置文件格式(另一种标记语言)
key: value
注意:
冒号后面有个空格,书写时需要严格按照这样的格式。Spring Boot会按照这样的格式去解析配置文件。
同样存在。系统配置项和用户自定义项。
yml优缺点分析
1)yml 是⼀个可读性高,写法简单、易于理解,它的语法和 JSON 语言类似。
2)yml 支持更多的数据类型,它可以简单表达清楚(数组)、散列表,标量等数据形态。它使用空白符号缩进和⼤量依赖外观的特色,特别适合⽤来表达或编辑数据结构、各种配置⽂件等。
3)yml 支持更多的编程语言,它不止是 Java 中可以使用在 Golang、PHP、Python、Ruby、JavaScript、Perl 中。
Spring Boot 不同平台配置文件规则
开发,测试和生产环境使用的都是不同的数据库,不同的端口号等等。那么我们在不同的环境下就需要使用不同的配置文件。
1)必须有主配置文件,主配置文件名必须是application.yml(.properties)。存放的是所有配置文件的共性,并且需要选择具体使用哪一个其他的配置文件。
2)不同平台的配置文件,每个平台拥有一个配置文件,配置文件名必须是application-xxx.yml(.properties)。
主配置文件中选择具体哪一个平台的配置文件
spring:
profiles:
active: test
日志信息
日志的功能
1)发现和定位问题。
2)记录用户登录日志,可以分析用户状态。
3)记录操作系统日志,方便数据恢复和定位操作人。
4)记录程序执行时间,为以后程序优化提供支持。
Spring Boot内置日志框架
通过SLF4J来选择具体使用的日志框架,那么后续系统需要更换日志框架,直接更换就可以。SLF4J可以匹配相应的日志框架,使系统的依赖性降低,利于系统更新和维护。
使用日志
得到日志对象
1)每一个类对应一个日志对象。可以通过LoggerFactory工厂模式获取日志对象。
private static final Logger log = LoggerFactory.getLogger(TestController.class);
2)使用Lombok插件为我们提供的@Slf4j注解,会为当前类提供一个log对象,直接使用就可以。Lombok在编译前会把注解替换成对应的代码,直接进行编译。
打印日志
public String hello() {
// 打印日志
// 默认日志级别是info 只有大于等于info级别才会显示
log.trace("trace");
log.debug("debug");
log.info("info");
log.warn("warn");
log.error("error");
return "hello world";
}
不同的方法名代表不同的日志级别,日志默认级别是info,只有大于等于info级别才会显示到控制台中。
配置文件中控制日志级别可以在不同环境打印不同级别的日志(不同的环境所关注的日志信息会有所差异)。
日志格式说明
日志级别
1)trace:微量,少许的意思,级别最低。
2)debug:需要调试时候的关键信息打印。
3)info:普通的打印信息(默认日志级别)。
4)warn:警告,不影使用,但需要注意。
5)error:错误信息,级别较高的错误日志信息。
6)fatal:致命的,因为代码异常导致程序退出的事件(操作系统负责调度)。
配置文件设置日志级别
为什么要设置日志级别,因为在不同环境中,需要关注的日志信息不同。比如开发环境就需要特别关注debug级别的日志信息,而生产环境就不需要关注。
配置日志级别我们就可以只关注我们想看的日志信息。
logging:
level:
root: error
com:
example:
demo:
controller: error
service: warn
root设置的是全局日志级别,项目中所有日志级别都是error。和root同级下可设置具体类的日志级别。这里就是com.example.demo.controller和com.example.demo.service类,级别分别为error和warn。
日志持久化
生产环境日志不可能都打印到控制台中,需要将其保存到文件中,方便相关人员去查看日志。
只需要在配置文件中配置日志保存的绝对路径即可,Spring Boot会将日志写入对应文件中。
logging:
file:
name: E:javaCodeloglog_all.log
name 可以具体设置日志保存文件名;path 默认文件名为spring.log。日志是追加写的,日志一旦产生就会永久保存。
Spring Boot默认日志文件大小为 10MB 超过10MB就会创建新的日志文件。
小结:
熟练使用配置文件和日志信息的控制可以很大程度帮助我们开发系统。