2011-10-06 121 views

回答

0

我認爲Logback也是一個盡力而爲的故障停止日誌記錄系統。它沒有自由空間的磁盤上

<appender name="file" class="ch.qos.logback.core.FileAppender"> 
    <file>/mnt/logtest/testlog.log</file> 
    <append>false</append> 
    <encoder> 
     <pattern>%d [%thread] %level %mdc %logger{35} - %msg%n</pattern> 
    </encoder> 
</appender> 

:運行這段代碼:

for (int i = 0; i < 8; i++) { 
    System.out.println("log " + i); 
    logger.info("log {}", i); 
    Thread.sleep(2000); 
} 

FileAppender。然後它運行沒有任何錯誤。幾秒鐘後,我從磁盤中刪除了一些文件。 的testlog.log文件的內容是:

2011-10-07 08:19:01,687 [main] INFO logbacktest.LoopLog - log 5 
2011-10-07 08:19:03,688 [main] INFO logbacktest.LoopLog - log 6 
2011-10-07 08:19:05,688 [main] INFO logbacktest.LoopLog - log 7 

沒有log 0 - log 4行的文件中。我不認爲其他appender更可靠。


在正常運行條件下(例如系統有足夠的磁盤空間),我從來沒有見過Logback丟失了一條消息。在這個意義上,我認爲它是可靠的。但是如果你想做審計日誌記錄,我認爲你應該使用別的東西,而不是一個盡力而爲的失敗停止日誌記錄系統。 (如果攻擊者找到了通過填充磁盤空間來禁用日誌記錄的方法,那麼他可以在用戶界面上執行所有操作,而無需任何審計日誌,並且注意到磁盤已滿。)

+0

我的問題是關於何時一切正常的更多信息。所以,假設有足夠的磁盤空間,如果我運行for循環10000次而不是8次,而不休眠2秒,它會錯過一些條目嗎? – user983141

+0

請檢查更新的答案。 – palacsint