调试模式下的Spring启动不使用log4j启动程序进行打印

时间:2016-01-12 15:05:44

标签: spring-boot log4j

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

我使用了log4j starter,如下所述,不包括logb​​ack

<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是我的超级罐)

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

我没有得到先前使用logback生成的调试日志,后者显示&#34;排除&#34;和&#34;包含物&#34;和其他必要的信息。

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

1 个答案:

答案 0 :(得分:2)

当您启动应用程序时,您将看到来自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包之外的代码执行的任何日志记录都没有配置任何appender,因此是三条警告消息中的第一条。

将以下内容添加到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。