org.apache.logging.log4j.core.async
Class AsyncLogger
java.lang.Object
org.apache.logging.log4j.spi.AbstractLogger
org.apache.logging.log4j.core.Logger
org.apache.logging.log4j.core.async.AsyncLogger
- All Implemented Interfaces:
- Serializable, Logger, ExtendedLogger
public class AsyncLogger
- extends Logger
AsyncLogger 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 the LMAX Disruptor library for
inter-thread communication. (http://lmax-exchange.github.com/disruptor/)
To use AsyncLogger, specify the System property
-DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
before you obtain a Logger, and all Loggers returned by LogManager.getLogger
will be AsyncLoggers.
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 AsyncLogger 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.
- See Also:
- Serialized Form
Fields inherited from class org.apache.logging.log4j.core.Logger |
config |
Methods inherited from class org.apache.logging.log4j.core.Logger |
addAppender, addFilter, filterCount, getAppenders, getContext, getFilters, getLevel, getParent, isAdditive, isEnabled, isEnabled, isEnabled, isEnabled, isEnabled, removeAppender, setAdditive, setLevel, toString, updateConfiguration |
Methods inherited from class org.apache.logging.log4j.spi.AbstractLogger |
catching, catching, catching, catchingMsg, checkMessageFactory, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, entry, entry, entry, entryMsg, error, error, error, error, error, error, error, error, error, error, error, error, error, error, exit, exit, exit, exitMsg, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, getMessageFactory, getName, info, info, info, info, info, info, info, info, info, info, info, info, info, info, isDebugEnabled, isDebugEnabled, isEnabled, isEnabled, isErrorEnabled, isErrorEnabled, isFatalEnabled, isFatalEnabled, isInfoEnabled, isInfoEnabled, isTraceEnabled, isTraceEnabled, isWarnEnabled, isWarnEnabled, log, log, log, log, log, log, log, log, log, log, log, log, log, log, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logMessage, logMessage, logMessage, logMessage, printf, printf, throwing, throwing, throwing, throwingMsg, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn |
AsyncLogger
public AsyncLogger(LoggerContext context,
String name,
MessageFactory messageFactory)
- Constructs an
AsyncLogger
with the specified context, name and
message factory.
- Parameters:
context
- context of this loggername
- name of this loggermessageFactory
- message factory of this logger
logMessage
public void logMessage(String fqcn,
Level level,
Marker marker,
Message message,
Throwable thrown)
- Specified by:
logMessage
in interface ExtendedLogger
- Overrides:
logMessage
in class Logger
actualAsyncLog
public void actualAsyncLog(RingBufferLogEvent event)
- This method is called by the EventHandler that processes the
RingBufferLogEvent in a separate thread.
- Parameters:
event
- the event to log
stop
public static void stop()
createRingBufferAdmin
public static RingBufferAdmin createRingBufferAdmin(String contextName)
- Creates and returns a new
RingBufferAdmin
that instruments the
ringbuffer of the AsyncLogger
.
- Parameters:
contextName
- name of the global AsyncLoggerContext
Copyright © 1999-2015 Apache Software Foundation. All Rights Reserved.
Apache Logging, Apache Log4j, Log4j, Apache, the Apache feather logo, the Apache Logging project logo, and the Apache Log4j logo are trademarks of The Apache Software Foundation.