Отказоустойчивое логирование log4j

164
30 декабря 2021, 21:20

Логирую приложение через log4j2, аппендером выступает logstash. Иногда из-за сетевых проблем на машине с logstash или с наплывом логов на него, он отказывается БЫСТРО принимать логи, начинается подвисание, и сообщения из wildfly начинаются скапливаться в очереди log4j2, замедляя работу сервера приложений. В дальнейшем это приводит к OutOfMemory.

Настроил альтернативное логирование в файл, но не могу воспроизвести ошибку когда логстеш недоступен. Когда пищу заранее не верный порт logstash, то log4j сразу понимает о недоступности хоста и пишет в файл.

Как мне настроить аппендер так, чтобы была попытка отправить лог в стеш, и лишь при неудаче отправлять его в файл. Отправка логов по UDP не подходит.

Answer 1

Log4J2 (равно как и Log4J) не поддерживает conditional appender, то есть Appender, который работает по некоему условию. Есть кое-какие костыли, с участием переменных среды, но это в вашем случае не будет работать.

Единственный вариант, который я вижу написать собственный кастомный Appender - это не так сложно как может показаться - надо всего лишь написать своего наследника класса AbstractAppender, который при записи проверяет есть связь с logstash или нет, если нет пишет в FileAppender, если есть то в logstash

READ ALSO
CSS хак или отдельный CSS для Opera

CSS хак или отдельный CSS для Opera

Подскажите, какие сейчас существуют CSS хаки для Оперы v 650

188
Не могу задать свойство style элементу DOM [закрыт]

Не могу задать свойство style элементу DOM [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

104
Как переместить блок по блоку

Как переместить блок по блоку

Имеем структуру html

181