三、Spring Boot与日志
1、日志框架
小张:开发大型系统;框架记录系统的一些运行信息;日志框架
高大上几个功能,异步模式、自动归档
日志抽象层,统一接口,给项目导入具体的日志实现就行了;
市面上的日志框架;
JUL、JCL、 log4j
左边选一个门面,右边来选一个实现;
日志门面:SLF4J
日志实现:Logback
SpringBoot:底层是spring–JCL
SpringBoot选用SLF4J Logback
2、SLF4J 使用
1.如何在系统中使用
给系统里面导入SLF4J的jar和Logback的实现jar
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(HelloWorld.class);
logger.info("Hello World");
}
}
使用方法
每一个日志实现的框架都有自己的配置文件,使用SLF4J 以后,配置文件还是做成日志实现框架的配置文件;
2.遗留问题
其他日志框架统一转换为SLF4J ;
如何统一:
1、将系统中,其他日志框架排除
2、用中间包替换原来的日志框架
3、我们导入SLF4J 其他实现
3、SpringBoot日志关系
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
总结:
1)springBoot底层也是使用SLF4J + Logback
2)springBoot也把其他日志替换SLF4J
4、日志使用
//记录器
Logger logger = LoggerFactory.getLogger(getClass());
@Test
void contextLoads() {
//日志级别:由低到高
//trace<debug<info<warn<error
//可以调整日志级别,日志只会打印这个级别以及以后的高级别
logger.trace("这是trace日志");
logger.debug("...debug...");
//默认info级别,需要改变时修改配置文件
logger.info("...info...");
logger.warn("...warn...");
logger.error("...error...");
}
logging.level.com.kai=trace;
#不指定路径:当前项目下生成springboot.log日志
#可以指定完整的路径
logging.file=springboot.log
#当前磁盘的根目录下创建日志文件
logging.path=/spring/log
#在控制台输出的日志的格式
logging.pattern.console=
#指定文件中日志输出的格式
logging.pattern.file=
日志格式解析
4、指定配置
在类路径下放置配置文件即可;规则如下
logback.xml 直接被日志框架识别
logbacl-spring.xml 日志框架不直接加载,由SpringBoot解析日志配置,可以使用springBoot的高级功能
5、切换日志框架
可以按照slf4j+log4j的方式
切换回log4j2