Class AsyncLogger
- All Implemented Interfaces:
com.lmax.disruptor.EventTranslatorVararg<RingBufferLogEvent>,Serializable,Supplier<LoggerConfig>,Logger,ExtendedLogger,LocationAwareLogger,Supplier<LoggerConfig>
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:
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.logging.log4j.core.Logger
Logger.LoggerProxy, Logger.PrivateConfig -
Field Summary
Fields inherited from class org.apache.logging.log4j.core.Logger
privateConfigFields inherited from class org.apache.logging.log4j.spi.AbstractLogger
CATCHING_MARKER, DEFAULT_FLOW_MESSAGE_FACTORY_CLASS, DEFAULT_MESSAGE_FACTORY_CLASS, ENTRY_MARKER, EXCEPTION_MARKER, EXIT_MARKER, FLOW_MARKER, name, THROWING_MARKER -
Method Summary
Modifier and TypeMethodDescriptionvoidactualAsyncLog(RingBufferLogEvent event) This method is called by the EventHandler that processes the RingBufferLogEvent in a separate thread.voidlog(Level level, Marker marker, String fqcn, StackTraceElement location, Message message, Throwable throwable) voidvoidtranslateTo(RingBufferLogEvent event, long sequence, Object... args) protected voidupdateConfiguration(Configuration newConfig) Associates this Logger with a new Configuration.Methods inherited from class org.apache.logging.log4j.core.Logger
addAppender, addFilter, atLevel, equals, filterCount, get, getAppenders, getContext, getFilters, getLevel, getParent, hashCode, isAdditive, isEnabled, isEnabled, isEnabled, isEnabled, isEnabled, isEnabled, isEnabled, isEnabled, isEnabled, isEnabled, isEnabled, isEnabled, isEnabled, isEnabled, isEnabled, isEnabled, removeAppender, requiresLocation, setAdditive, setLevel, toString, writeReplaceMethods inherited from class org.apache.logging.log4j.spi.AbstractLogger
always, atDebug, atError, atFatal, atInfo, atTrace, atWarn, catching, catching, catching, catchingMsg, checkMessageFactory, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, enter, enter, enter, enter, enter, entry, entry, entry, entryMsg, entryMsg, entryMsg, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, exit, exit, exit, exit, exitMsg, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, getFlowMessageFactory, getLogBuilder, getMessageFactory, getName, getRecursionDepth, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, 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, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logMessage, logMessage, logMessage, logMessage, logMessage, logMessage, logMessage, logMessage, logMessage, logMessage, logMessage, logMessage, logMessage, logMessage, logMessage, logMessage, logMessage, logMessage, logMessage, printf, printf, throwing, throwing, throwing, throwingMsg, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, traceEntry, traceEntry, traceEntry, traceEntry, traceEntry, traceExit, traceExit, traceExit, traceExit, traceExit, traceExit, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn
-
Method Details
-
updateConfiguration
Description copied from class:LoggerAssociates this Logger with a new Configuration. This method is not exposed through the public API.There are two ways this could be used to guarantee all threads are aware of changes to config.
- Synchronize this method. Accessors don't need to be synchronized as Java will treat all variables within a synchronized block as volatile.
- Declare the variable volatile. Option 2 is used here as the performance cost is very low and it does a better job at documenting how it is used.
- Overrides:
updateConfigurationin classLogger- Parameters:
newConfig- The new Configuration.
-
logMessage
- Specified by:
logMessagein interfaceExtendedLogger- Overrides:
logMessagein classLogger
-
log
-
translateTo
- Specified by:
translateToin interfacecom.lmax.disruptor.EventTranslatorVararg<RingBufferLogEvent>
-
actualAsyncLog
This method is called by the EventHandler that processes the RingBufferLogEvent in a separate thread. Merges the contents of the configuration map into the contextData, after replacing any variables in the property values with the StrSubstitutor-supplied actual values.- Parameters:
event- the event to log
-