Я думаю, что Logback - это также лучшая система журналирования при сбое.Запустите этот фрагмент:
for (int i = 0; i < 8; i++) {
System.out.println("log " + i);
logger.info("log {}", i);
Thread.sleep(2000);
}
с FileAppender
:
<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>
на диске, на котором нет свободного места.Затем он работает без каких-либо ошибок.Через несколько секунд я удалил некоторые файлы с диска.Содержимое файла 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
строк.Я не думаю, что другие приложения более надежны.
В нормальных условиях работы (например, в системе достаточно места на диске) я никогда не видел, чтобы Logback потерял сообщение.В этом смысле я думаю, что это надежно.Но если вы хотите заняться журналом аудита, я думаю, вам следует использовать что-то другое, а не лучшую систему регистрации отказа.(Если злоумышленник нашел способ отключить ведение журнала, заполнив дисковое пространство, он может сделать все в пользовательском интерфейсе без какого-либо журнала аудита и заметить, что диск заполнен.)