为 Spring Boot 项目配置 Logback 日志
关于 Logback
日志系统是一个线上项目必备的素质之一,代表性的日志框架 Log4j、SLF4J、Logback 这哥仨竟然是亲兄弟,他们有一个亲爹,那就是巨佬 Ceki Gulcu。
由于 Spring Boot 的默认日志框架选用的 Logback,再加上 Log4j2 之前爆过严重的漏洞,所以我们这次就只关注 Logback。
1)Logback 非常自然地实现了 SLF4J,不需要像 Log4j 和 JUL 那样加一个适配层。
2)Spring Boot 的默认日志框架使用的是 Logback,启动编程喵项目的时候就可以看到 Logback 记录的日志了。
怎么看出来是 logback 呢?
说实话,看不出来,哈哈哈,不过可以从 Spring Boot 官网找到证据。
还有,通过源码也可以窥见一二。
3)logback 分为三个模块:
- logback-core,核心模块,提供了关键的通用机制;
- logback-classic,可以看作是 log4j 的改进版,实现了简单的日志门面 SLF4J;
- logback-access,主要用来和 Servlet 容器交互,比如说 Tomcat,提供了一些 HTTP 访问的功能。
如果想研究 logback 源码的话,可以按照这三个模块去研究。
直接上手
不废话,直接新建一个空的 Spring Boot 项目,在测试类中加上两行代码。
@SpringBootTest
class CodingmoreLogbackApplicationTests {static Logger logger = LoggerFactory.getLogger(CodingmoreLogbackApplicationTests.class);@Testvoid contextLoads() {logger.info("logback testing");}
}
Logger 和 LoggerFactory 都来自 SLF4J,所以如果项目是从 Log4j + SLF4J 切换到 Logback 的话,此时的代码是零改动的。
其他什么也不用做,运行后就可以看到 logback 已经正常工作了。
在没有配置文件的情况下,一切都是默认的,Logback 的日志信息会输出到控制台。可以通过 StatusPrinter 来打印 Logback 的内部信息:
LoggerContext lc = (LoggerContext)LoggerFactory.getILoggerFactory();
StatusPrinter.p