Размер буфера по умолчанию для асинхронного логгера Log4j2 - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть вопрос о размере буфера по умолчанию при использовании асинхронных регистраторов с log4j2. Версия log4j2 - 2.11.2; она добавлена ​​в Spring Boot log4j2 starter 2.1.13.RELEASE.

Похоже, что разные места в документации ссылаются на разные значения. Документ asyn c регистратора относится к размеру 256 * 1024. Однако в общем конфигурационном документе log4j2 упоминается, что при работе в режиме без мусора размер равен 4 * 1024, в противном случае 256 * 1024. И log4j2 и выше запускаются по умолчанию в режиме без мусора .

Но когда я запускаю свое приложение с StatusLogger, установленным в TRACE, размер буфера отображается как 262144 (256 * 1024 ).

DEBUG StatusLogger Creating custom DiscardingAsyncQueueFullPolicy(discardThreshold:INFO)
DEBUG StatusLogger [AsyncContext@685f4c2e] Starting AsyncLogger disruptor for this context with ringbufferSize=262144, waitStrategy=TimeoutBlockingWaitStrategy, exceptionHandler=org.apache.logging.log4j.core.async.AsyncLoggerDefaultExceptionHandler@7a4f0f29...

Я бы предположил, что размер равен 4096. Кто-то еще видел такое поведение или я что-то упустил здесь?

Спасибо.
- An oop

1 Ответ

0 голосов
/ 03 апреля 2020

Когда Log4j запущен в веб-приложении (javax.servlet.Servlet находится в classpath) или системное свойство log4j2.enableThreadLocals имеет значение false, размер буфера будет 4 * 1024. В противном случае это 256 * 1024.

...