簡體   English   中英

log4J沒有在Spring Boot Microservice中寫入特定的日志文件

[英]log4J is Not Writing to Specific Log File in Spring Boot Microservice

我正在嘗試使用Log4j寫入我的文件系統中的本地日志文件。

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

pom.xml

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

在基於Unix的macOS上,我進入/ var / log /並執行以下操作:

sudo mkdir myapp
chmod 777 myapp

在myapp內部,到處都有以下設置:

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

myapp / src / main / resources / 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文件!

我在使用以下命令構建的Spring Boot 1.5.4.RELEASE中使用此函數:

mvn clean install

然后使用以下任一方法運行:

java -jar myapp.jar 

要么

mvn spring-boot:run

如果有人可以為我提供更好的屬性文件或看到我做錯了事,將不勝感激?

感謝您抽出時間來閱讀。

@Veeram是正確的-日志是通過logback打印的,它是Spring Boot附帶的。 您需要用Log4j替換它。 但是,現在這不是一種選擇:

Spring Boot 1.4.0發行說明

在Apache EOL發布后,Log4j 1支持已被刪除。

因此,我建議您考慮升級到Log4j 2

PS我認為您仍然可以使用Log4j 1.2 ,但是在這種情況下,您必須定義並指定應該從spring-boot-starter-logging模塊中排除哪些依賴項,而應該添加這些依賴項。 我已經建立了一個演示項目來重現您的問題,這是build.gradle中的依賴項列表(我使用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')
}

正如@mxf所說,logback現在是Spring Boot中的默認日志子系統。

盡管您可以配置其他記錄器,但我建議還是保留logback,因為這確實是一個痛苦的切換記錄器的世界。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM