2015-02-10 72 views
0

在生產環境中(例如)我們經常使用INFO日誌級別,因爲在DEBUG日誌中,大小變得很快。在JAVA中調試日誌旋轉

我知道這是很可能的SLJ4J或LOG4J配置日誌循環分割文件等 但大多數的時候,我們只需要調試日誌異常時出現,所以我們可以有更多的信息(HTTP請求日誌例)。

我想知道是否有可能只保留(例如)1分鐘的DEBUG日誌,並保存它,如果出現異常。 (主日誌文件總是在INFO級) 例如,當發生HttpRequestException時,我們有一個文件用1分鐘的DEBUG日誌HttpRequestException-10-02-2015-10:28:50.log保存在一個特定的文件夾中

因此,我們可以很容易地看到此文件夾

/Exceptions/ 
    - HttpRequestException-10-02-2015-10:28:50.log 
    - NullPointerException-10-02-2015-10:29:51.log 
    - IOException-10-02-2015-11:29:51.log 

在所有異常所以......有沒有可能與像SLF4J一個工具來做到這一點? 並且DEBUG在生產服務器上記錄了一個巨大的性能問題?

謝謝

回答

0

我找到了解決方案。 我用cyclicBufferTracker告訴附加器利用最後的X線一旦trigerred 我可以使用評估屬性來配置觸發(當發生錯誤時的默認觸發)

電子郵件是確定對我來說,但如果有人希望把它放在文件,而不是電子郵件,我認爲你可以在此頁面上創建一個自定義的追加程序,而不是SMTPAppender

像:http://jira.qos.ch/browse/LOGBACK-207

下面是實際的代碼:(您需要的javax.activation和javax.mail i F你使用電子郵件執行),如果您在使用Gmail和我一樣,你需要允許低安全性應用程序在Gmail設置:Gmail less secure apps

<appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender"> 
    <smtpHost>smtp.gmail.com</smtpHost> 
    <smtpPort>587</smtpPort> 
    <asynchronousSending>false</asynchronousSending> 
    <STARTTLS>true</STARTTLS> 
    <username>GoogleUsername</username> 
    <password>mypassword</password> 
    <to>[email protected]</to> 
    <from>[email protected]</from> 
    <subject>Exception Alert</subject> 
    <layout class="ch.qos.logback.classic.PatternLayout"> 
     <pattern>%date - %message%n</pattern> 
    </layout> 
    <cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker"> 
     <bufferSize>50</bufferSize> 
    </cyclicBufferTracker> 
</appender> 

希望這將有助於