2016-01-12 42 views
1

根據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/stackoverflow/blob/master/sboot1.zip)。嘗試從pom.xml中註銷log4j啓動器依賴項後,運行命令'java -jar target \ sboot1-1.0.jar --debug',那些日誌將不會被打印並通過註釋嘗試另一種方式,日誌將被打印爲logback依賴。 –

回答

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。

+0

啊啊謝謝@Andy Wilkinson,是一個非常簡單的錯誤。在提及記錄器配置後,其傾倒大量日誌。 –