spring-boot - Debug模式下的 Spring Boot 日志不使用 log4j starter 打印

标签 spring-boot log4j

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

我已经使用了 log4j starter,如下所述,不包括 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>

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

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

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

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

最佳答案

当您启动应用程序时,您将看到来自 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。

关于spring-boot - Debug模式下的 Spring Boot 日志不使用 log4j starter 打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34747051/

相关文章:

java - 更改 Java 类加载器的优先级

java - Log4j 中带日期的文件名

java - 是否可以将输出缓冲到 Log4j Mail Appender?

SpringBoot 中的 javax.validation.constraints.Email

amazon-web-services - 定义为 null 的 bean 'AmazonEc2InstanceDataPropertySourcePostProcessor' 无法注册

java - LOG4J 中日志文件的最佳大小是多少?

logging - 将 Sentry 日志记录与Elasticsearch结合使用

spring - 为什么在使用 Spring Boot 时我需要实体可序列化?

java - 如何在 Spring Boot ws 中访问 Spring Boot Actuator(生产就绪功能)

带有正文和 header 的 Angular 7 post 请求