目录
日志的两种方式,以及个性化配置文件
一、通过注解@SLF4j使用
在Spring Boot项目中,spring-boot-starter
依赖项中已经包含日志框架!
在Spring Boot项目中,当添加了Lombok依赖项后,可以在任何类上添加@SLF4j
注解,则Lombok会在编译期声明一个名为log
的日志对象变量,此变量可以调用相关方法来输出日志!
package com.example.product;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@Slf4j
@SpringBootTest
public class Slf4jTests {
@Test
void testLog() {
log.info("输出了一条日志……");
}
}
SLF4j的日志的可显示级别,根据信息的重要程度,从不重要到严重依次是:
trace
debug
info
:一般信息warn
:警告信息error
:错误信息
调用log
变量来输出日志时,可以使用以上级别对应的方法,则可以输出对应级别的日志!
在Spring Boot项目中,日志的默认显示级别是info
,则默认情况下只会显示info
及更加严重的级别的日志!如果需要修改日志的显示级别,需要在application.properties
中配置logging.level
的属性,例如:
# 日志的显示级别
logging.level.cn.tedu.csmall=info
注意:在配置以上属性时,必须在logging.level
右侧加上要配置显示级别的包的名称,此包名就是配置日志显示级别的根包。
日志方法的重载
void trace(String var1);
void trace(String var1, Object... var2);
其它级别的日志也有完全相同参数列表的方法。
以上的第2个方法适用于在输出的日志中添加变量的值,在第1个字符串参数中,各变量均使用{}
表示,通过第2个参数依次传入各变量对应的值即可:
int x = 1;
int y = 2;
log.trace("{}+{}={}", x, y, x + y);
使用以上方式输出时,会将字符串部分进行缓存(是一种预编译的做法),在执行时,并不会出现拼接字符串的情况,所以,在执行效率方面,比传统的System.out.println()
的要高很多!
关于Perfile个性化配置文件
在不同的工作环境中,需要配置不同级别的日志,来控制不同的日志输出 , 修改不同的数据库连接来执行项目, 如果在application.properties
中反复修改大量配置值,是非常不方便的!
日志,在开发环境中,日志的显示级别可以是trace
这种较低级别的,而在测试环境、生产环境(项目部署上线并运行)中可能需要改为info / debug,
数据库,连接数据库配置的相关参数,在不同环境中,可能使用不同的值……
Spring框架支持Profile配置(个性化配置) :支持使用
application-xxx.properties
作为配置文件的名称,其中,xxx
部分是完全自定义的名称
如: 开发时的配置文件:application-dev.properties
# 连接数据库的配置
spring.datasource.url=jdbc:mysql://localhost:3306/person_dv?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root
# 日志的显示级别
logging.level.cn.tedu.csmall=trace
生产环境下的配置文件:application-prod.properties
# 连接数据库的配置
spring.datasource.url=jdbc:mysql://192.168.1.255:3306/big_small?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
spring.datasource.username=prod
spring.datasource.password=s3ctet@tedu.cn
# 日志的显示级别
logging.level.cn.tedu.csmall=info
以上这些不在application.properties
中的配置,默认是不生效的!需要application.properties
中显式的激活后,才会生效!例如:
# 激活Profile配置
spring.profiles.active=prod
二、通过导包
在需要日志输出的类中创建日志对象 logger private static Logger logger = LoggerFactory.getLogger(LoggerTests.class);
- 其中 使用static好处是方便在静态方法调用
- Logger和LoggerFactory 来自org.slf4j包
- 方法参数是当前的类名,用于设置Logger的层级,方便分组管理,分组打开和关闭
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Person(){
Logger logger = LoggerFactory.getLogger(Person.class);
logger.info("这是一条通过导包的日志");
}
此方式的日志的使用的与@SLF4J注解方式使用一致! ! !