自 Spring Framework 5.0 以来,Spring 在 spring-jcl 模块中实现了自己的 Commons Logging 桥。该实现会检查 classpath 中是否存在 Log4j 2.x API 和 SLF4J 1.7 API,并使用其中第一个发现的 API 作为日志实现,如果 Log4j 2.x 和 SLF4J 都不可用,则退回到 Java 平台的核心日志设施(也被称为 JUL 或 java.util.logging)。

    把 Log4j 2.x 或 Logback(或其他 SLF4J 提供者)放在你的 classpath 中,不需要任何额外的桥接,让框架自动适应你的选择。更多信息见 Spring Boot 日志参考文档。

    :::info Spring 的 Commons Logging 变体只用于核心框架和扩展中的基础设施日志。
    对于应用程序代码内的日志需求,最好直接使用 Log4j 2.x、SLF4J 或 JUL。 :::

    可以通过 org.apache.commons.logging.LogFactory检索一个 Log 实现,如下例所示:

    1. public class MyBean {
    2. private final Log log = LogFactory.getLog(getClass());
    3. // ...
    4. }