Log4j2 monitorInterval производительность


В log4j2 атрибут monitorInterval доступен для элемента Configuration. Я попытался прочитать о влиянии этого атрибута на производительность, но нигде не смог найти ни одного источника. Итак, у меня есть несколько вопросов относительно атрибута monitorInterval.

  1. Я хотел бы знать, какое влияние на производительность он оказывает, указывая малое значение как 5 (5 секунд) и большое значение, скажем, как 3000 (5 минут) в элементе Configuration?

  2. Что именно происходит? Означает ли это, что он будет автоматически обнаруживать каждый раз, когда проходит определенный интервал времени?

  3. Есть ли способ заставить log4j2 перезагрузить конфигурацию сразу через конфигурационные файлы (XML, JSON, YAML, PROPERTIES), а не программную реконфигурацию?

1 2

1 ответ:

Раньше было так, что было небольшое влияние на производительность. В частности, Log4j2 иногда проверяет время lastModified файла конфигурации при обработке события журнала. Он был достаточно умен, чтобы не делать этого на каждом событии, но только когда прошло достаточно времени с момента последней проверки: только один раз каждые monitorInterval секунды.

Начиная с Log4j 2.5 он отличается: есть фоновый поток наблюдателя, который иногда просыпается и проверяет время lastModified файла конфигурации. Так что теперь нет никакого влияния на производительность ведения журнала. (Причиной этого изменения была на самом деле не производительность, а точность: ранее файлы не переворачивались, если что-то не было зарегистрировано, что могло быть намного позже времени переворота.) См. https://issues.apache.org/jira/browse/LOG4J2-1202 Подробнее.

Для принудительной перезагрузки конфигурации, помимо прикосновения к файлу конфигурации и программной реконфигурации, вы можете использовать интерфейс JMX. Также взгляните на конфигуратор класс в log4j-ядре. Он имеет несколько методов, которые приводят к реконфигурации.