与 log4j2用asyncRoot配置异步日志是如何使用disruptor差别有几个:java
此处EventFactory采用的是RingBufferLogEvent.FACTORY,newInstance逻辑大体是:异步
public RingBufferLogEvent newInstance() { final RingBufferLogEvent result = new RingBufferLogEvent(); if (Constants.ENABLE_THREADLOCALS) { result.messageText = new StringBuilder(Constants.INITIAL_REUSABLE_MESSAGE_SIZE); result.parameters = new Object[10]; } return result; }
建立的是 RingBufferLogEvent
实例。该对象封装了日志输出的执行动做等。async
thread factory的名字是"AsyncLogger[" + contextName + "]"ui
此处用RingBufferLogEventHandler,对接RingBufferLogEvent实例处理日志写出。日志
此处用RingBufferLogEventTranslator,对接RingBufferLogEvent实例组装日志信息。code
封装了一个叫tryPublish的方法进入队列。对象