log4j2自定义appender及rollover原理简析

  1. 附上两个appender配置:RollingRandomAccessFileAppender和自定义的LogStoreAppender
<appenders>
    <RollingRandomAccessFile name="UPDATE_FILE" immediateFlush="true"
                             fileName="${LOG_HOME}/update.log"
                             filePattern="${LOG_HOME}/update.log.%d{yyyy-MM-dd}">
      <PatternLayout>
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %class{36} %L %M - %msg%xEx%n</pattern>
      </PatternLayout>
      <Policies>
        <TimeBasedTriggeringPolicy/>
      </Policies>
    </RollingRandomAccessFile>

    <LogStoreAppender name="ARTS_FILE" immediateFlush="true"
                             fileName="${LOG_HOME}/arts.log"
                             filePattern="${LOG_HOME}/arts.log.%d{yyyy-MM-dd}">
      <PatternLayout>
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %class{36} %L %M - %msg%xEx%n</pattern>
      </PatternLayout>
      <Policies>
        <TimeBasedTriggeringPolicy/>
      </Policies>
    </LogStoreAppender>
  </appenders>
  1. 自定义appender方式
    log4j2自定义appener可以直接类似RollingRandomAccessFileAppender,去 extends AbstractOutputStreamAppender<RollingRandomAccessFileManager>
    然后只需要在start()和append()中实现自己的逻辑。
  2. rollover源码
    注意下面RollingRandomAccessFileAppender类中的append()中调用manager.checkRollover(event);去主动check是否需要rollover


    image.png

    image.png

    我们使用的是TimeBasedTriggeringPolicy


    image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容