[英]Spring Boot app having trouble with logback.groovy config file
我正在嘗試讓Spring Boot與Logback一起使用,並且遇到了我無法解決的錯誤/問題。
為了完整地重現此問題,我在GitHub上創建了一個Spring Boot Example存儲庫 ,但從本質上講,這是我的application.yml
:
logging:
config: 'logback.groovy'
server:
port: 9200
error:
whitelabel:
enabled: false
和我的logback.groovy
:
statusListener(OnConsoleStatusListener)
def LOG_PATH = '/opt/springbootexample/logs/springbootexample'
appender('CONSOLE', ConsoleAppender) {
encoder(PatternLayoutEncoder) {
pattern = '%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n'
}
}
appender('FILE', FileAppender) {
file = "${LOG_PATH}.log"
encoder(PatternLayoutEncoder) {
pattern = '%msg%n'
outputPatternAsHeader = true
}
}
appender('ROLLING', RollingFileAppender) {
encoder(PatternLayoutEncoder) {
Pattern = '%d %level %thread %mdc %logger - %m%n'
}
rollingPolicy(TimeBasedRollingPolicy) {
fileNamePattern = "${LOG_PATH}-%d{yyyy-MM}.zip"
maxHistory = 30
totalSizeCap = '1KB'
}
}
root(INFO, ["CONSOLE", "ROLLING"])
我確保/opt/springbootexample/logs
存在,我運行了chmod -R 777 /opt/springbootexample
所以我的Spring Boot應用程序應該在那里創建日志文件並將其寫入就不會有問題。
在本地運行該應用程序時,沒有錯誤/異常/警告; 在控制台輸出中,一切看起來都很好。 然后,我啟動瀏覽器並將其指向http://localhost:9200
,該瀏覽器應返回一條簡單的虛擬消息,但是什么也沒有發生。 更糟糕的是,控制台中也沒有任何反應。
唯一的提示是,在關閉應用程序后,如果轉到/opt/springbootexample/logs/springbootexample.log
,其內容為:
#logback.classic pattern: %msg%n
這告訴我也許logback.groovy
的FileAppender
可能配置錯誤? 有什么想法/想法嗎?
您的應用程序正常工作(網頁已正確加載並顯示“ Spring Boot的問候!”),您的日志記錄配置有些奇怪。
第一個問題是您忘記將非滾動文件附加程序添加到根記錄器中。 只需將"FILE"
添加到logback.groovy
底部的列表中logback.groovy
如下所示:
root(INFO, ["FILE", "CONSOLE", "ROLLING"])
// ^^^^^^^
和日志工作。 否則,將初始化附加程序,並使用“怪異的標頭”創建文件(因為您選擇使用outputPatternAsHeader = true
),並且由於未選擇不附加任何內容。
因此,唯一奇怪的問題是為什么網頁無法為您加載...但是如果日志有效,也許您會獲得更多信息:)
為LOG_PATH
嘗試更簡單的LOG_PATH
,例如def LOG_PATH = '/tmp/foo'
,因為如果這是錯誤的,服務器將關閉,顯然該頁面將無法加載。
如果路徑指向存在且可寫的內容,則它將起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.