2013-10-03 3 views
0

Я создал простое приложение с ниже конфигурации журналаLog4j2 AsyncLogger всегда нить состояние ожидания

 <appenders> 
     <RollingRandomAccessFile name="SUMMARY_ALL" fileName="./logs/summary.log" 
     filePattern="logs/$${date:yyyy-MM}/summary-%d{yyyy-MM-dd-HH}-%i.log.gz" immediateFlush="false" append="false"> 
     <PatternLayout> 
      <pattern>%d{ISO8601} [%t] %p %c %L - %m%n</pattern> 
     </PatternLayout> 
     <Policies> 
      <TimeBasedTriggeringPolicy interval="6" 
       modulate="true" /> 
      <SizeBasedTriggeringPolicy size="10 MB" /> 
     </Policies> 
     </RollingRandomAccessFile> 
     </appenders> 

Лесорубы как:

<loggers> 
    <root level="DEBUG" includeLocation="false"> 
     <AppenderRef ref="SUMMARY_ALL" /> 
    </root> 
</loggers> 

Когда я запускаю это я всегда получаю AsyncLogger в состоянии ожидания , Кто-нибудь может помочь. К нему прилагается снимок ThreadDump

enter image description here

ответ

0

Этот вопрос также был размещен в список рассылки log4j. Резюме обсуждения:

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

Ожидаемое поведение. Пока события правильно регистрируются, это не проблема.

Подробная информация о различии между AsyncAppenders и AsyncLoggers приведена в блоге Кристиана Гробмейера http://www.javacodegeeks.com/2013/07/log4j-2-performance-close-to-insane.html.

Смежные вопросы