Separate disruptors for encoder and network communications
If all destination servers are unavailable the log events fill the ring buffer. Usually it is not an issue, but if you use LogstashAccessTcpSocketAppender the memory footprint might be quite significant.
In my project I'm using Spring MVC which stores a lot of data in HttpServletRequest attributes - this map is copied to AccessEvent istances. In my case the ring buffer with default size occupied about 600Mb of heap and caused OOM on my test environment
I believe that log appender should never cause OOM under any circumstances.
I suggest introducing a separate Disruptor for encoding the log events, so even in case of unreachable destination heap would not be occupied with strongly reachable big AccessEvent objects:
Event -> RingBuffer -> Encoder -> RingBuffer -> TcpAppender