在调试模式下使用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日志?
当您启动应用程序,你会从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。
啊啊谢谢@Andy Wilkinson,是一个非常简单的错误。在提及记录器配置后,其倾倒大量日志。 –
它适用于我。你有没有想过将你的主要方法中的参数传递给你的'SpringApplication'?像这样:'SpringApplication.run(YourApplication.class,args);' –
谢谢你的回复@AndyWilkinson,但是参数是作为参数传递的。上传了示例代码[here](https://github.com/mnkartik/stackoverflow/blob/master/sboot1.zip)。尝试从pom.xml中注销log4j启动器依赖项后,运行命令'java -jar target \ sboot1-1.0.jar --debug',那些日志将不会被打印并通过注释尝试另一种方式,日志将被打印为logback依赖。 –