Надежность - PullRequest
       13

Надежность

2 голосов
/ 07 октября 2011

Log4j не является надежным из-за следующего часто задаваемого вопроса: http://logging.apache.org/log4j/1.2/faq.html#a1.2 «Нет. Log4j ненадежен. Это лучшая система регистрации отказа при сбое».

Является ли Logback более надежным? Возможно ли, что когда 1000 сообщений журнала (например) пишутся с использованием logback за очень короткий промежуток времени, он может молча пропустить несколько сообщений. Спасибо, Сунил

1 Ответ

1 голос
/ 07 октября 2011

Я думаю, что 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 потерял сообщение.В этом смысле я думаю, что это надежно.Но если вы хотите заняться журналом аудита, я думаю, вам следует использовать что-то другое, а не лучшую систему регистрации отказа.(Если злоумышленник нашел способ отключить ведение журнала, заполнив дисковое пространство, он может сделать все в пользовательском интерфейсе без какого-либо журнала аудита и заметить, что диск заполнен.)

...