在调试模式下使用log4j启动器不打印的弹簧启动

问题描述:

根据spring启动文档(最新),它提到spring启动在内部使用logback。在调试模式下使用log4j启动器不打印的弹簧启动

我已经使用的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是我的超级罐子)

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

我没有得到它正在使用的logback这显示“排除”和“包裹”和其他必要信息之前生成的调试日志。

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

+0

它适用于我。你有没有想过将你的主要方法中的参数传递给你的'SpringApplication'?像这样:'SpringApplication.run(YourApplication.class,args);' –

+0

谢谢你的回复@AndyWilkinson,但是参数是作为参数传递的。上传了示例代码[here](https://github.com/mnkartik/*/blob/master/sboot1.zip)。尝试从pom.xml中注销log4j启动器依赖项后,运行命令'java -jar target \ sboot1-1.0.jar --debug',那些日志将不会被打印并通过注释尝试另一种方式,日志将被打印为logback依赖。 –

当您启动应用程序,你会从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。

+0

啊啊谢谢@Andy Wilkinson,是一个非常简单的错误。在提及记录器配置后,其倾倒大量日志。 –