【问题标题】:Log4j2 AsyncLogger is always thread wait stateLog4j2 AsyncLogger 始终处于线程等待状态
【发布时间】:2013-10-03 09:30:02
【问题描述】:

我已经使用以下日志配置创建了一个简单的应用程序

      <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的快照

【问题讨论】:

    标签: logging log4j log4j2


    【解决方案1】:

    这个问题也被发布到 log4j 邮件列表中。讨论总结:

    AsyncLogger 线程大部分时间会处于等待状态,要么等待新工作的到来,要么等待阻塞的 I/O 调用返回。

    这是预期的行为。只要事件被正确记录,这不是问题。

    关于 AsyncAppenders 和 AsyncLoggers 之间区别的详细信息可以在 Christian Grobmeier 的博文http://www.javacodegeeks.com/2013/07/log4j-2-performance-close-to-insane.html 中找到。

    【讨论】:

      猜你喜欢
      • 2018-01-17
      • 2014-01-31
      • 1970-01-01
      • 2014-09-20
      • 1970-01-01
      • 1970-01-01
      • 2020-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多