目录
一、统一的日志门面。(抽象层)
- 日志的抽象层(logging-abstract)。在项目中再引入具体日志实现即可完成日志操作。
二、常用的日志框架。
- JUL(Java Util Logging)。Java原生日志。适合小型应用。(日志实现)
- JCL(Jakarta/Apache Commons Logging)。通用日志API。(日志门面)
- Log4j。(日志实现)
- Log4j2。(日志实现)
- Logback。(日志实现)
- SLF4J(Simple Logging Facade for Java)。提供日志功能的抽象层(门面框架)。
其中spring框架默认使用:JCL、spring-boot-starter-logging采用:slf4j+logback。
三、使用日志。
- 开发时,日志记录方法的调用,直接调用日志抽象层的方法,会自动的调用所引入的日志实现类的日志记录方法。
- slf4j官方入门示例:SLF4J Manual。
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,还需要导入它对应支持它的实现类:如logback。不然会如官网所说的一样,调用日志记录的方法会输出null。
- 每一个日志实现框架都有自己的配置文件。也就是如果使用slf4j后,配置文件还是做日志实现框架的配置文件。
四、统一日志实现。
- 因为实际开发中,系统可能主要环境使用的slf4j+logback记录日志。但是还有其他集成框架也有自己的日志,如spring(commons-logging)、Hibernate (jboss-logging)、mybatis、xxx。
- 想要做到统一,可以按照官网提供的思路去实现。Log4j Bridge。
- 当主要环境使用的slf4j+log4j记录日志。因为在log4j设计的时,还不知道slf4j,所以需要额外的适配层。其他的框架的日志使用对应的替代品即可统一。
- 综合上诉所说,可以总结一下统一日志的操作步骤。
如何让系统的所有日志统一到slf4j?
- 将系统的其他日志框架先排除。
- 使用中间包(适配的jar)替换原有的日志框架。
- 再导入对应slf4j的其他日志实现框架。