电子说
日志框架
目前市面上常见的日志框架有:slf4j(Simple Logging Facade for Java)、logback、log4j、log4j2、commons-logging(Spring默认日志框架)、JUL(java.util.logging)等。
日志框架包括日志的抽象与日志的实现两部分,其中日志的抽象推荐使用slf4j,而日志的实现推荐使用logback。Spring Boot的日志框架默认选择的就是这两个。
SLF4J的使用
系统开发在使用日志的时候,不应该使用日志的实现,而应该使用日志的抽象,但是日志的配置文件还是要使用日志实现框架本身的配置文件,日志使用示例代码如下:
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的调用结构如下:
日志统一问题
当一个项目集成了多个框架,而这些框架大部分都集成了日志框架,就会出现一个项目底层使用多种日志框架的问题,slf4j给出了这个问题的解决办法,如下图所示:
日志框架统一为slf4j的步骤:①排除其他框架集成的日志框架;②用中间包来替换原来的日志框架;③导入slf4j框架的其他实现。
Spring Boot的日志
Spring Boot Starter的maven依赖:
< dependency >
< groupId >org.springframework.boot< /groupId >
< artifactId >spring-boot-starter< /artifactId >
< version >2.7.7< /version >
< scope >compile< /scope >
< /dependency >
Spring Boot底层的日志依赖关系图:
Spring Boot使用的日志依赖:
< dependency >
< groupId >org.springframework.boot< /groupId >
< artifactId >spring-boot-starter-logging< /artifactId >
< version >2.7.7< /version >
< scope >compile< /scope >
< /dependency >
由上图可以看出,Spring Boot自动适配了所有的日志,而且底层默认使用了slf4j+logback记录日志,引入其他框架的时候,只需要把这个框架依赖的日志框架移除即可。
Spring Boot默认日志框架示例代码如下:
package com.brevity;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class LoggingApplicationTests {
// 获取日志记录器,参数建议使用当前类
Logger logger = LoggerFactory.getLogger(LoggingApplicationTests.class);
@Test
void logTest() {
// Spring Boot默认使用的是info级别的日志
logger.trace("跟踪日志");
logger.debug("debug日志");
logger.info("info日志");
logger.warn("warn日志");
logger.error("error日志");
}
}
修改默认的日志级别只需要在配置文件中修改即可,例如在application.properties文件中添加如下代码:
# 调整日志级别
logging.level.com.brevity=trace
# 修改控制台输出的日志格式
# %d表示日期时间,%thread表示线程名,%-5level:级别从左显示5个字符宽度
# %logger{50} 表示logger名字最长50个字符,否则按照句号分割,%msg:日志消息,%n是换行符
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50
全部0条评论
快来发表一下你的评论吧 !