2014-10-28 110 views
5

我試圖將SpringMaven添加到我的一個現有項目中,並且我發現無論如何配置,日誌似乎都超出了我的控制範圍。Log4j似乎不能在Spring Boot中工作

我試着把log4j.properties放在src/main/javasrc/main/resources(其實我不確定放在哪裏)。

但是,當我使用Log4j進行日誌記錄時,日誌僅顯示在控制檯中,但我將其配置爲文件。

log4j.properties是這樣的:

log4j.rootLogger=DEBUG, A1 
log4j.appender.A1=org.apache.log4j.FileAppender 
log4j.appender.A1.encoding=utf-8 
log4j.appender.A1.File=E:\Programminglog\debug.log 
log4j.appender.A1.Threshold = DEBUG 
log4j.appender.A1.Append=true 
log4j.appender.A1.layout=org.apache.log4j.PatternLayout 
log4j.appender.A1.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n 

我不知道如果我錯過了什麼或Spring覆蓋一些設置,因爲我是新來MavenSpring

PS:之前我在pom的.xml加Log4j依賴性,雖然沒有我用org.apache.log4j.Logger

這是我application.java看起來如何編譯錯誤,如:

@Configuration 
@EnableAutoConfiguration 
@ComponentScan({"hello","wodinow.weixin.jaskey"}) 
public class Application extends WebMvcConfigurerAdapter { 

    public static void main(String[] args) { 
     ApplicationContext ctx = SpringApplication.run(Application.class, args); 

     System.out.println("Let's inspect the beans provided by Spring Boot:"); 

     String[] beanNames = ctx.getBeanDefinitionNames(); 
     Arrays.sort(beanNames); 
     for (String beanName : beanNames) { 
      System.out.println(beanName); 
     } 

     LogUtil.info("Application Boots!");// here this line does not show in the file 
    } 

    @Bean 
    public CommandService commandService(){ 
     return CommandService.getInstance(); 
    } 
} 

enter image description here

+0

你在運行什麼服務器?僅供參考,默認情況下,Maven不會將src/main/java中的任何內容複製到您的應用程序中。因此,你應該保持log4j.properties等中的src/main /資源 – 2014-10-28 13:48:27

+0

我使用了Spring嵌入Tomcat的,我跑我Application.java作爲Java應用程序啓動我的應用程序。順便說一句,我也複製到性能的webapp/WEB-INF,但沒有運氣:( – Jaskey 2014-10-28 13:54:49

+0

log4j.properties必須是可用的類路徑上,WEB-INF目錄不是類路徑上(正常)。如果您運行在命令行上'-Dlog4j.debug'應用程序,你會發現怎麼想的log4j正在發生的事情(如果有的話在所有)。 – 2014-10-28 14:06:19

回答

0

UPDATE

默認情況下,如果你使用了「啓動多金屬氧酸鹽」,的logback將用於登錄

(來源:Spring Boot Reference, Chapter 25 Logging

因此,無論您通過的logback logback.xml配置你的日誌,或者您有log4j的庫。 (當你需要與包括LIB更多的幫助,那麼請發表您的pom.xml)

我建議使用的logback(和SLF4J)


OLD:

  • log4j.properties文件放入src\main\resources(不在...\java
  • 確保它被命名爲log4j.properties(在你的問題,你指定的文件log4j.propertie
  • 此行添加到您的web.xml

的web.xml:

<context-param> 
     <param-name>log4jConfigLocation</param-name> 
     <param-value>/WEB-INF/classes/log4j.properties</param-value> 
    </context-param> 

    <listener> 
     <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> 
    </listener> 

(@see Initializing Log4J with Spring?

+1

對不起,在問題的錯字,我沒加你是指什麼在我的web.xml,但沒有運氣。另外,我使用的彈簧啓動以及Spring MVC的,所以實際上,我不把什麼特別在web.xml中,我運行一個Application.java – Jaskey 2014-10-28 14:37:35

+0

@Jaskey應用做你想出解決辦法?我面臨着同樣的問題,用彈簧啓動。 – 2015-03-11 08:23:32

0

我就遇到了這個確切的問題,事實證明,春季啓動包括春季啓動啓動記錄,並會忽略任何你添加的東西,但仍然存在。我可以通過雙擊我的pom並單擊Spring-Boot-Starter-Logging然後選擇「編輯啓動器」然後刪除彈簧啓動器啓動器日誌記錄來修復它。

如果您使用的是一些其他類型的依賴關係管理系統的想法是一樣的,只是仔細審查任何包含在你的項目春季啓動,並確保log4j的是唯一的記錄系統包括在內。

-1

如果您正在使用log4j的彈簧引導,那麼你必須在你的pom.xml添加具有「排除」依賴

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter</artifactId> 
    <version>1.3.3.RELEASE</version> 
    **<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> 
    <version>1.2.5.RELEASE</version> 
</dependency>** 

請點擊此。它會解決你的問題。

http://www.atechref.com/blog/maven/spring-boot-using-log4j-logging/

+0

歡迎提供解決方案的鏈接,但請確保您的答案有用沒有它:[添加鏈接的上下文](// meta.stackexchange.com/a/8259),以便您的同行用戶可以瞭解它是什麼以及它爲什麼存在,然後引用頁面中最相關的部分,在目標頁面不可用的情況下重新鏈接。 [僅僅是一個鏈接的答案可能會被刪除。](// stackoverflow.com/help/deleted-answers) – geisterfurz007 2018-02-12 08:27:26

相關問題