【问题标题】:Direct Spring DEBUG logging to Console将 Spring DEBUG 日志记录到控制台
【发布时间】:2017-04-22 13:48:08
【问题描述】:

我有一个 Maven 项目,我想将 DEBUG Spring 日志记录定向到控制台。

我的日志接口是 slf4j,我正在绑定到 Log4j2。

在我的 pom.xml 中,我已经排除了 commons-logging 或 Slf4j:

<dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-context</artifactId>
   <version>${org.springframework-version}</version>
   <exclusions>
      <!-- Exclude Commons Logging in favor of SLF4j -->
      <exclusion>
         <groupId>commons-logging</groupId>
         <artifactId>commons-logging</artifactId>
      </exclusion>
   </exclusions>
</dependency>

我相信 slf4j 连接正确,因为我的 log4j2.xml 中有这个:

<Logger name="com.myApp" level="info" additivity="false">
    <AppenderRef ref="Console" />
</Logger>

这在我的测试类构造函数中:

logger.info("constructor");
logger.debug("constructor");

如果我从 info/debug 翻转 log4j2.xml 中的日志级别,我会在控制台中获得一两条日志行。

我的 log4j2.xml 中也有这个:

   <Logger name="org.springframework" level="all" additivity="false">
       <AppenderRef ref="Console" />
   </Logger>

但它的效果为零。我错过了什么?为什么 Spring 不将详细的调试行记录到控制台?

【问题讨论】:

    标签: spring slf4j log4j2


    【解决方案1】:

    如果对其他人有帮助,请找到它。缺少此依赖项:

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-jcl</artifactId>
        <version>2.1</version>
     </dependency>
    

    所以日志记录看起来像它的工作,但 Spring 日志记录不是。

    【讨论】: