Логирую приложение через log4j2, аппендером выступает logstash. Иногда из-за сетевых проблем на машине с logstash или с наплывом логов на него, он отказывается БЫСТРО принимать логи, начинается подвисание, и сообщения из wildfly начинаются скапливаться в очереди log4j2, замедляя работу сервера приложений. В дальнейшем это приводит к OutOfMemory.
Настроил альтернативное логирование в файл, но не могу воспроизвести ошибку когда логстеш недоступен. Когда пищу заранее не верный порт logstash, то log4j сразу понимает о недоступности хоста и пишет в файл.
Как мне настроить аппендер так, чтобы была попытка отправить лог в стеш, и лишь при неудаче отправлять его в файл. Отправка логов по UDP не подходит.
Log4J2 (равно как и Log4J) не поддерживает conditional appender, то есть Appender
, который работает по некоему условию. Есть кое-какие костыли, с участием переменных среды, но это в вашем случае не будет работать.
Единственный вариант, который я вижу написать собственный кастомный Appender
- это не так сложно как может показаться - надо всего лишь написать своего наследника класса AbstractAppender
, который при записи проверяет есть связь с logstash
или нет, если нет пишет в FileAppender
, если есть то в logstash
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Подскажите, какие сейчас существуют CSS хаки для Оперы v 650
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском