在使用SpringBoot开发的过程中我们通常会用到配置文件来设置配置信息
以及使用日志来进行记录我们的操作,方便我们对错误的定位
配置文件的作用在于:设置端口,设置数据库连接信息,设置日志等等
在SpringBoot中,配置文件必须要以application作为命名,
同时在SpringBoot中有两种配置文件格式
一种是application.properties,另一种是application.yml的格式
两种格式的区别在于properties是SpringBoot中默认的配置文件的格式
而yml格式支持多种语言的格式
以properties格式为例子:properties存储配置信息是以key-value的形式进行存储的
#配置项中设置端口号
server.port = 9090
#配置项中设置数据库的连接
spring.datasource.url = jdbc:mysql//127.0.0.1:3306/java?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = 8888
#配置项中设置日志
logging.level.com.example.demo = debug
logging.file=d:/work/demo.log
#配置项中设置对象中的属性
student.name = tom
student.id = 1
student.gender = man
properties格式的配置文件的缺点在于不能够支持多种语言,并且配置内容过于冗余
但是在springboot中properties的优先级是比yml要高的
而我们使用yml的形式就可以弥补properties的缺点了
#设置端口号
server:
port: 9090
#设置字段的内容
mystr1: 你\n好
mystr2: '你\n好'
mystr3: "你\n好"
#设置对象的属性
student:
id: 1
name: 张三
age: 18
# 日志级别的设置
logging:
level:
root: error
com:
example:
demo:
controller: trace
file:
path: D:\
上面提到的设置字段的内容,我们都是可以在class类里面进行调用的
不管是使用哪种配置文件都是使用 @Value(${xxxx})注解的形式进行调用
@Value("${mystr1}")
private String str1;
@Value("${mystr2}")
private String str2;
@Value("${mystr3}")
private String str3; //"xxx\nxxx" 只有这样才能进行换行
在yml中我们要想将字段进行换行打印就需要用到字符串以及转义字符,否则无法进行换行输出
我们还提到了在可以设置对象的属性进行注入
这个时候我们就需要在实体类中使用注解
@ConfigurationProperties("xxx") <-此处的xxx为配置文件中对象名称
这样就可以进行属性注入了
@ConfigurationProperties("student")
@Controller
public class StudentController {
private int id;
private String name;
private int age;
}
在实际开发的过程中我们通常有三个环境:开发环境、测试环境、生产环境
可能每个环境下我们的配置文件都不一样,但是代码是相同的
所以为了适配各个环境下的配置文件
我们可以创建一个公共的配置文件来调用不同环境下的配置环境
我们各个环境的配置文件都要以 application 开头然后加上各自的命名
比如开发环境:application-dev.yml 测试环境application-test.yml 生产环境application-prod.yml
在公共的配置文件 application.yml中只需要输入这段代码就可以调用到不同的配置环境了
#设置平台 比如此时我想设置成生产环境
spring:
profiles:
active: prod
讲完了配置文件我们来说说日志
我们可以使用日志来进行记录错误等信息,当然也可以记录程序的执行时间以及程序的操作人等等
实际上SpringBoot中内置了日志,我们每次在启动SpringBoot的时候都能看到一长串的日志内容
那么SpringBoot中的日志框架里面的内容可以分为:日志门面以及日志实现
日志门面就相当于是一个中间人,我们在调用日志门面以后日志门面会帮我们找到具体的日志实现的项目 ,在日志门面包括(SLF4J以及common-logging)
在日志中,日志的等级分为(从低到高进行排序):
[trace]:级别最低
[debug] :调试的时候进行打印的内容
[info]:普通打印信息
[warn]:警告信息但不影响使用
[error]:错误信息影响正常使用
[fatal]:不会打印出来,直接导致程序退出
我们可以在配置文件中设置我们想要看到的日志等级,比如
#yml格式下的日志配置
logging:
level: #只查看error及以上的日志信息
root:error
我们也可以设置某一个包在运行过程的日志提示,比如
#yml格式下的日志配置
logging:
level: #只查看error及以上的日志信息
root:error
com:
example: #查看controller包底下在运行过程中trace及以上的日志信息
controller: trace
那么现在再来讲讲应该怎么样使用日志
我们首先要实例化日志这个类然后再将需要打印日志的类
(比如我现在的UserController需要答应日志)
private static final Logger logger
= LoggerFactory.getLogger(UserController.class);
然后就可以正常使用了
@RequestMapping("/sayHi")
public String sayHi(){
logger.trace("trace"); //打印一个trace日志 日志内容是trace
logger.info("info"); //打印一个info日志 日志内容是info
logger.warn("warn"); //打印一个warn日志 日志内容是warn
logger.error("error"); //打印一个error日志 日志内容是error
return "hello world";
}
实际上我们如果调用Lombok这个框架的话
只需要加入 @Slf4j 这个注解就不需要再实例化日志对象了
然后日志对象的名称注意 一定是 log
接下来的步骤和正常使用没有区别