Class AsyncLoggerConfig

All Implemented Interfaces:
Filterable, LocationAware, LifeCycle, LifeCycle2

@Plugin(name="asyncLogger", category="Core", printObject=true) public class AsyncLoggerConfig extends LoggerConfig
Asynchronous Logger object that is created via configuration and can be combined with synchronous loggers.

AsyncLoggerConfig is a logger designed for high throughput and low latency logging. It does not perform any I/O in the calling (application) thread, but instead hands off the work to another thread as soon as possible. The actual logging is performed in the background thread. It uses LMAX Disruptor for inter-thread communication.

To use AsyncLoggerConfig, specify <asyncLogger> or <asyncRoot> in configuration.

Note that for performance reasons, this logger does not include source location by default. You need to specify includeLocation="true" in the configuration or any %class, %location or %line conversion patterns in your log4j.xml configuration will produce either a "?" character or no output at all.

For best performance, use AsyncLoggerConfig with the RandomAccessFileAppender or RollingRandomAccessFileAppender, with immediateFlush=false. These appenders have built-in support for the batching mechanism used by the Disruptor library, and they will flush to disk at the end of each batch. This means that even with immediateFlush=false, there will never be any items left in the buffer; all log events will all be written to disk in a very efficient manner.