【问题标题】:How to integrate SLF4J logging with Spring 4?如何将 SLF4J 日志记录与 Spring 4 集成?
【发布时间】:2016-06-20 21:55:38
【问题描述】:

找不到任何好的答案,为什么 slf4j 日志记录不适用于 spring 4。感谢 this post 我已经完成了所有工作,但作者没有提到:

Spring 中的强制日志依赖是 Jakarta Commons Logging API (JCL)

(http://docs.spring.io/spring/docs/4.1.x/spring-framework-reference/htmlsingle/).

这意味着如果我们想要 slf4j 工作 我们必须从我们的类路径(或 pom.xml,如果使用 maven)中排除 commons-logging。使用 maven spring-core 时会自动选择 commons-logging。 (我在执行命令“mvn dependency:tree”时理解了这一点)。

复制步骤:

  1. 从 spring-core 中排除 commons-logging

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
        <exclusions>
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
  2. 在 pom.xml 中添加下一个依赖项:

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.19</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>2.5</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.5</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.5</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>1.7.19</version>
    </dependency>
    
  3. 像这样创建 log4j2.xml 文件(如果你想通过 slf4j 记录 log4j2)。

    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="WARN">
    <Appenders>
    <Console name="CONSOLE" target="SYSTEM_OUT">
        <PatternLayout
            pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
    </Console>
    </Appenders>
    <Loggers>
    <Root level="error">
        <AppenderRef ref="CONSOLE" />
    </Root>
    <logger level="info" additivity="false" name="org.springframework.security">
        <AppenderRef ref="CONSOLE" />
    </logger>
    <logger level="info" additivity="false" name="org.springframework.web">
        <AppenderRef ref="CONSOLE" />
    </logger>
    <logger level="warn" additivity="false" name="controllers">
        <AppenderRef ref="CONSOLE" />
    </logger>
    </Loggers>
    </Configuration>
    
  4. 在你的类中写日志消息:

    private final Logger logger =LoggerFactory.getLogger(this.getClass());
    logger.debug("This is a debug message");
    logger.info("This is an info message");
    

【问题讨论】:

    标签: maven logging slf4j log4j2 spring-4


    【解决方案1】:

    您不需要排除公共日志记录。如果您使用 log4j-jcl 而不是 jcl-over-slf4j,Spring 日志记录将直接路由到 log4j 而不是通过 slf4j。

    【讨论】:

      【解决方案2】:

      现在,感谢@rgoers,我的 pom.xml 日志部分如下所示:

          <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
          <version>1.7.19</version>
          </dependency>     
          <dependency>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-slf4j-impl</artifactId>
          <version>2.5</version>
      </dependency>
      <dependency>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-api</artifactId>
          <version>2.5</version>
      </dependency>
      <dependency>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-core</artifactId>
          <version>2.5</version>
      </dependency>
      <dependency>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-jcl</artifactId>
          <version>2.5</version>
      </dependency>
      

      【讨论】:

      • 很高兴听到这个消息。您可能需要升级到 2.6.1,以获得无垃圾或低垃圾日志记录的好处。
      • 另外,如果 Ralph 的回答有助于解决问题,请考虑接受他的回答,以便他获得声誉积分。
      猜你喜欢
      • 2011-11-07
      • 2018-11-23
      • 2015-04-03
      • 1970-01-01
      • 2011-04-05
      • 2012-03-28
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      相关资源
      最近更新 更多