2017-06-13 85 views
0

我試圖讓Spring Boot與Logback一起工作,並且遇到了一個我無法弄清楚的錯誤/問題。Spring引導應用程序遇到logback.groovy配置文件的問題

重現此問題的全部,我創建了一個GitHub的Spring Boot Example repo,但本質上,這是我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.groovyFileAppender也許?任何想法/想法?

回答

1

您的應用程序工作正常(網頁加載正確,並顯示「Spring Boot!的問候!」),您的日誌記錄配置只是有點過分。

第一個問題是您忘記將非滾動文件appender添加到您的根記錄器。就在的logback.groovy底部添加"FILE"到列表中,像這樣:

root(INFO, ["FILE", "CONSOLE", "ROLLING"]) 
//   ^^^^^^^ 

和日誌的作品。如果沒有這個,appender會被初始化,這個文件是用「怪異的頭文件」創建的(因爲您選擇使用outputPatternAsHeader = true),並且沒有任何內容會被追加,因爲您選擇不這樣做。

所以,唯一奇怪的問題就是爲什麼網頁不加載你......但是,也許你會得到更多的信息,如果該日誌工程:)

嘗試的東西LOG_PATH簡單得多,如def LOG_PATH = '/tmp/foo' ,因爲如果這是錯誤的服務器將關閉,顯然該頁面將無法加載。

如果路徑指向的東西存在並且是可寫的,它將起作用。

相關問題