2016-01-18 2 views
1

Я в основном пытаются сделать следующее:log4j2 вызвать System.exit

  • Всякий раз, когда я получаю фатальную протоколируются, log4j2 должен автоматически выйти

  • log4j2 должен вызывать System.exit после суммы X ошибок регистрируется

Если log4j2 не имеет этой возможности, существует ли способ разместить обратный вызов в этих журналах?

Спасибо!

+1

у вас пробовал любой код –

+1

log4j - это кадровый фреймворк, предназначенный для сбора и сохранения результатов диагностики из вашего приложения, не влияя на его работу как можно меньше. Он не может делать то, что вам нужно, вам нужно искать другой инструмент/реализовать его самостоятельно. – sfThomas

+1

Если вам действительно нужно это сделать, вы можете - например, попробовать прочитать журналы из внешнего скрипта и убить приложение при определенных условиях. – sfThomas

ответ

3

Невозможно сделать это автоматически. Однако было бы тривиально создавать Appender, который вызывает System.exit(). Затем все, что вам нужно сделать, - это настроить вашу конфигурацию для регистрации в этом приложении, когда регистрируется фатальное сообщение.

Вы также можете создать фильтр, который подсчитывает количество сообщений об ошибках, которые регистрируются, а затем всегда возвращает НЕЙТРАЛЬНО. Как только счет будет достигнут, он вызовет System.exit().

Все, что сказал, это не то, что я когда-либо хотел бы в системе, над которой я работал.