【问题标题】:Spring boot in debug mode logs not printing using log4j starter调试模式下的 Spring Boot 日志不使用 log4j 启​​动器打印
【发布时间】:2016-01-12 15:05:43
【问题描述】:

根据 spring boot 文档(最新),它提到 spring boot 在内部使用 logback。

我使用了下面提到的 log4j 启​​动器,不包括 logback

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j</artifactId>
        </dependency>
    </dependencies>

例如如果以下命令在调试模式下运行(假设 sboot1 是我的 uber jar)

java -jar target\sboot1-1.0.jar --debug

我没有得到之前使用 logback 生成的调试日志,它显示了“排除”和“包含”以及其他必要的信息。

在使用 log4j 等其他日志框架时如何获取 --debug 日志?

【问题讨论】:

  • 它对我有用。您是否记得将 main 方法中的 args 传递给您的 SpringApplication?像这样:SpringApplication.run(YourApplication.class, args);
  • 感谢@AndyWilkinson 的回复,但是是的,args 作为参数传递。上传示例代码here。尝试在 pom.xml 中取消注释 log4j 启​​动依赖项后运行命令java -jar target\sboot1-1.0.jar --debug,这些日志不会被打印,并通过注释尝试其他方式,日志将打印 logback 依赖项。

标签: spring-boot log4j


【解决方案1】:

当您启动应用程序时,您会看到来自 Log4j 的三个警告消息:

log4j:WARN No appenders could be found for logger (org.springframework.boot.SpringApplication).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

他们告诉你你没有正确配置 Log4j。

查看您的log4j-spring.properties 文件,您尚未配置log4j.rootCategory,并且您配置的唯一记录器是log4j.logger.com.mnkartik。这意味着由 com.mnkartik 包之外的代码执行的任何日志记录都没有配置任何附加程序,因此是三个警告消息中的第一个。

将以下内容添加到您的 log4j-spring.properties 文件中:

logging.rootCategory=INFO, consoleAppender, fileAppender

这意味着com.mnkartik 之外的所有记录器都将在INFO 级别记录,并将写入控制台和文件附加程序。因此,--debug 现在应该具有预期的效果,因为 org.springframework.boot.* 中的代码现在可以登录到某个地方。

顺便说一句,可能还值得指出的是,Apache 已宣布 Log4j 的生命周期结束,因此,它在 Spring Boot 1.3 中已被弃用,并将在 1.4 中删除。您应该考虑迁移到 Log4j 2 的 Logback。

【讨论】:

  • 啊谢谢@Andy Wilkinson,这是一个非常简单的错误。在提到记录器配置之后,它会倾倒大量的日志。
猜你喜欢
  • 2015-02-08
  • 1970-01-01
  • 1970-01-01
  • 2019-04-24
  • 2022-10-20
  • 2022-12-22
  • 2020-03-04
  • 1970-01-01
  • 2020-03-27
相关资源
最近更新 更多