2017-09-12 89 views
8

我試圖使用Log4j寫入我的文件系統中的本地日誌文件。log4J在Spring Boot中沒有寫入特定的日誌文件Microservice

實際上使用了不同項目中的確切屬性文件,只是更改了頂級目錄的名稱以匹配我的應用程序的名稱。不同的項目寫入logs.log文件,但是這根本不打印任何內容。這兩個項目都使用相同版本的log4j。

的pom.xml

<dependency> 
    <groupId>log4j</groupId> 
    <artifactId>log4j</artifactId> 
    <version>1.2.17</version> 
</dependency> 

在我的基於Unix的MacOS,我cd'ed到在/ var /日誌/並做了以下內容:所有

sudo mkdir myapp 
chmod 777 myapp 

有內部MYAPP,以下設置過的地方:

if (log.isDebugEnabled() { 
    log.debug("print something"); 
} 

的myapp/src目錄/主/資源/ log4j.properties:

log4j.rootCategory=DEBUG, RF 

log4j.category.your.category.name=DEBUG 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 

log4j.appender.stdout.layout.ConversionPattern=%-5p [%F]: %m [%d{ISO8601}]%n 
log4j.logger.com.amazonaws=DEBUG RF 

log4j.appender.RF=org.apache.log4j.RollingFileAppender 
log4j.appender.RF.File=/var/log/myapp/logs.log 

log4j.appender.RF.MaxFileSize=10MB 
log4j.appender.RF.MaxBackupIndex=30 
log4j.appender.RF.layout=org.apache.log4j.PatternLayout 
log4j.appender.RF.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x(%F:%L) - %m%n 
Threshold=DEBUG 

不爲什麼裏面明白:

/var/log/myapp/ 

有沒有存在logs.log文件!

現在用這一個春天引導1.5.4.RELEASE裏面我建立使用它:

mvn clean install 

然後運行使用兩種:

java -jar myapp.jar 

mvn spring-boot:run 

會如果有人能夠提供給我一個更好的屬性文件,或者看看我做錯了什麼,我會感激嗎?

感謝您花時間閱讀本文。

+2

您必須排除spring引導日誌記錄(默認logback)以允許log4j日誌記錄。請參閱此處[如何排除](https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html#howto-configure-log4j-for-logging) – Veeram

回答

3

@Veeram是正確的 - 日誌打印logback,它與Spring Boot一起出現。您需要將其替換爲Log4j。然而,現在它是不是一種選擇:

Spring Boot 1.4.0 Release Notes

Log4j的1支持已被刪除下面的Apache EOL公告。

所以我建議你考慮升級到Log4j 2

P.S.我認爲您仍然可以使用Log4j 1.2,但在這種情況下,您必須定義並指定哪些依賴項應排除在spring-boot-starter-logging模塊上,而應該添加哪些依賴項。我已經設置了一個演示項目來重現您的問題,這裏是構建中的依賴列表。gradle這個(我用的搖籃,但我想你得一分):

dependencies { 
    compile('org.springframework.boot:spring-boot-starter') { 
     exclude group: 'ch.qos.logback' 
     exclude group: 'org.slf4j', module: 'log4j-over-slf4j' 
    } 
    compile('commons-logging:commons-logging:1.2') 
    compile('log4j:log4j:1.2.17') 
    compile('org.slf4j:slf4j-log4j12:1.7.25') 
    testCompile('org.springframework.boot:spring-boot-starter-test') 
} 
1

由於@mxf說,現在的logback是春天引導內默認的日誌記錄子系統。

雖然您可以配置其他記錄器,但我建議留在logback中,因爲它確實是一個痛苦轉換記錄器的世界。