RollingRandomAccessFile

RollingRandomAccessFile

我正在对log4j2使用以下配置,并注意到日志语句在刷新到磁盘之前已存储在内存中。是否有一个设置可以控制在刷新到磁盘之前将多少条消息存储在内存中?

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="debug" name="TestApp" packages="">
  <Appenders>
    <RollingRandomAccessFile name="RollingRandomAccessFile" fileName="logs/test.log" immediateFlush="false" append="false"
                 filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
      <PatternLayout>
        <Pattern>%d %p %c{1.} [%t] %m %ex%n</Pattern>
      </PatternLayout>
      <Policies>
        <TimeBasedTriggeringPolicy />
        <SizeBasedTriggeringPolicy size="500 MB"/>
      </Policies>
    </RollingRandomAccessFile>
  </Appenders>
  <Loggers>
      <AsyncLogger name="FATAL_LOGGER" level="fatal" includeLocation="true" additivity="false">
      <AppenderRef ref="RollingRandomAccessFile"/>
    </AsyncLogger>
    <Root level="debug" includeLocation="false">
      <AppenderRef ref="RollingRandomAccessFile"/>
    </Root>
  </Loggers>
</Configuration>

最佳答案

您可以更改AsyncLogger.RingBufferSize值(默认为256*1024,最小值为128)。这应该有助于配置在刷新到磁盘之前分配多少对象。

09-11 19:12