Как обрабатывать исключения в ведении журнала при использовании асинхронного ведения журнала Log4j2?

В моем приложении я использую Log4j2 в асинхронном режиме (асинхронный регистратор использует Disruptor), может ли кто-нибудь сказать мне, как обрабатывать исключение, которое происходит в процессе ведения журнала. Ведение журнала очень важно для моего приложения, я не хочу пропустить ни одного оператора журнала. Если что-то пойдет не так с ведением журнала, об этом нужно немедленно предупредить.

Согласно странице Log4j, Apache предлагает использовать ExceptionHandler, но я не смог найти вспомогательную тему о том, как использовать это.

Обработка ошибок. Если во время процесса регистрации возникает проблема и выдается исключение, асинхронному регистратору или аппендеру будет труднее сообщить об этой проблеме приложению. Это можно частично облегчить, настроив ExceptionHandler, но это может не охватывать все случаи. По этой причине, если ведение журнала является частью вашей бизнес-логики, например, если вы используете Log4j в качестве среды ведения журнала аудита, мы рекомендуем синхронно регистрировать эти сообщения аудита. (Обратите внимание, что вы по-прежнему можете комбинировать их и использовать асинхронное ведение журнала для ведения журнала отладки/трассировки в дополнение к синхронному ведению журнала для журнала аудита.)

Ждем предложений.


person k0der    schedule 01.04.2015    source источник


Ответы (1)


Я предлагаю сначала попытаться реализовать простой класс, реализующий интерфейс ExceptionHandler, и убедиться, что он вызывается при возникновении проблемы. Как только это будет подтверждено, вы можете перейти к реализации вашего собственного резервного механизма.

Во-вторых, может быть сложно разработать надежный резервный вариант: ваш резервный вариант может не иметь возможности записи на диск, если причиной сбоя log4j было то, что диск заполнен или поврежден. Точно так же вы не сможете установить сетевое соединение... Я предлагаю, чтобы ваш резервный вариант включал несколько вариантов, чтобы увеличить вероятность успеха одного из этих вариантов.

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

В зависимости от того, насколько это критично, вы можете захотеть изучить продукты поставщиков, которые обеспечивают высокую доступность - обычно это касается не только ведения журнала, но не уверен, что вам здесь нужно.

person Remko Popma    schedule 03.04.2015