Class RingBufferLogEvent
java.lang.Object
org.apache.logging.log4j.core.async.RingBufferLogEvent
- All Implemented Interfaces:
Serializable
,CharSequence
,LogEvent
,Message
,ParameterVisitable
,ReusableMessage
,StringBuilderFormattable
public class RingBufferLogEvent
extends Object
implements LogEvent, ReusableMessage, CharSequence, ParameterVisitable
When the Disruptor is started, the RingBuffer is populated with event objects. These objects are then re-used during
the life of the RingBuffer.
- See Also:
-
Field Summary
Modifier and TypeFieldDescriptionstatic final org.apache.logging.log4j.core.async.RingBufferLogEvent.Factory
TheEventFactory
forRingBufferLogEvent
s. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionchar
charAt
(int index) void
clear()
Release references held by ring buffer to allow objects to be garbage-collected.Creates and returns a new immutable copy of thisRingBufferLogEvent
.void
execute
(boolean endOfBatch) Event processor that reads the event from the ringbuffer can call this method.<S> void
forEachParameter
(ParameterConsumer<S> action, S state) void
formatTo
(StringBuilder buffer) Returns theReadOnlyStringMap
object holding context data key-value pairs.Gets the context map (also know as Mapped Diagnostic Context or MDC).Gets the context stack (also known as Nested Diagnostic Context or NDC).Returns the Instant when the message was logged.getLevel()
Gets the level.Returns the fully qualified class name of the caller of the logging API.Gets the logger name.Gets the Marker associated with the event.Gets the message associated with the event.long
Returns the value of the running Java Virtual Machine's high-resolution time source when this event was created, or a dummy value if it is known that this value will not be used downstream.short
Object[]
Gets the source of logging request.long
Gets the thread ID.Gets the thread name.int
Gets the thread priority.Gets throwable associated with logging request.Gets throwable proxy associated with logging request.long
Gets event time in milliseconds since midnight, January 1, 1970 UTC.void
initializeBuilder
(Log4jLogEvent.Builder builder) Initializes the specifiedLog4jLogEvent.Builder
from thisRingBufferLogEvent
.boolean
Returnstrue
if this event is the end of a batch,false
otherwise.boolean
Returns whether the source of the logging request is required downstream.boolean
int
length()
memento()
void
setEndOfBatch
(boolean endOfBatch) Sets whether this event is the last one in a batch.void
setIncludeLocation
(boolean includeLocation) Sets whether the source of the logging request is required downstream.void
setValues
(AsyncLogger anAsyncLogger, String aLoggerName, Marker aMarker, String theFqcn, Level aLevel, Message msg, Throwable aThrowable, StringMap mutableContextData, ThreadContext.ContextStack aContextStack, long threadId, String threadName, int threadPriority, StackTraceElement aLocation, Clock clock, NanoClock nanoClock) subSequence
(int start, int end) Object[]
swapParameters
(Object[] emptyReplacement) Replaces this ReusableMessage's parameter array with the specified value and return the original arrayReturns an immutable version of this log event, which MAY BE a copy of this event.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface java.lang.CharSequence
chars, codePoints, toString
-
Field Details
-
FACTORY
public static final org.apache.logging.log4j.core.async.RingBufferLogEvent.Factory FACTORYTheEventFactory
forRingBufferLogEvent
s.
-
-
Constructor Details
-
RingBufferLogEvent
public RingBufferLogEvent()
-
-
Method Details
-
setValues
public void setValues(AsyncLogger anAsyncLogger, String aLoggerName, Marker aMarker, String theFqcn, Level aLevel, Message msg, Throwable aThrowable, StringMap mutableContextData, ThreadContext.ContextStack aContextStack, long threadId, String threadName, int threadPriority, StackTraceElement aLocation, Clock clock, NanoClock nanoClock) -
toImmutable
Description copied from interface:LogEvent
Returns an immutable version of this log event, which MAY BE a copy of this event.- Specified by:
toImmutable
in interfaceLogEvent
- Returns:
- an immutable version of this log event
-
execute
public void execute(boolean endOfBatch) Event processor that reads the event from the ringbuffer can call this method.- Parameters:
endOfBatch
- flag to indicate if this is the last event in a batch from the RingBuffer
-
isPopulated
public boolean isPopulated()- Returns:
true
if this event is populated with data,false
otherwise
-
isEndOfBatch
public boolean isEndOfBatch()Returnstrue
if this event is the end of a batch,false
otherwise.- Specified by:
isEndOfBatch
in interfaceLogEvent
- Returns:
true
if this event is the end of a batch,false
otherwise
-
setEndOfBatch
public void setEndOfBatch(boolean endOfBatch) Description copied from interface:LogEvent
Sets whether this event is the last one in a batch. Used by asynchronous Loggers and Appenders to signal to buffered downstream components when to flush to disk, as a more efficient alternative to theimmediateFlush=true
configuration.- Specified by:
setEndOfBatch
in interfaceLogEvent
- Parameters:
endOfBatch
-true
if this event is the last one in a batch,false
otherwise.
-
isIncludeLocation
public boolean isIncludeLocation()Description copied from interface:LogEvent
Returns whether the source of the logging request is required downstream. Asynchronous Loggers and Appenders use this flag to determine whether to take aStackTrace
snapshot or not before handing off this event to another thread.- Specified by:
isIncludeLocation
in interfaceLogEvent
- Returns:
true
if the source of the logging request is required downstream,false
otherwise.- See Also:
-
setIncludeLocation
public void setIncludeLocation(boolean includeLocation) Description copied from interface:LogEvent
Sets whether the source of the logging request is required downstream. Asynchronous Loggers and Appenders use this flag to determine whether to take aStackTrace
snapshot or not before handing off this event to another thread.- Specified by:
setIncludeLocation
in interfaceLogEvent
- Parameters:
includeLocation
-true
if the source of the logging request is required downstream,false
otherwise.- See Also:
-
getLoggerName
Description copied from interface:LogEvent
Gets the logger name.- Specified by:
getLoggerName
in interfaceLogEvent
- Returns:
- logger name, may be
null
.
-
getMarker
Description copied from interface:LogEvent
Gets the Marker associated with the event. -
getLoggerFqcn
Description copied from interface:LogEvent
Returns the fully qualified class name of the caller of the logging API.- Specified by:
getLoggerFqcn
in interfaceLogEvent
- Returns:
- The fully qualified class name of the caller.
-
getLevel
Description copied from interface:LogEvent
Gets the level. -
getMessage
Description copied from interface:LogEvent
Gets the message associated with the event.- Specified by:
getMessage
in interfaceLogEvent
- Returns:
- message.
-
getFormattedMessage
- Specified by:
getFormattedMessage
in interfaceMessage
- See Also:
-
getFormat
-
getParameters
- Specified by:
getParameters
in interfaceMessage
- See Also:
-
getThrowable
- Specified by:
getThrowable
in interfaceMessage
- See Also:
-
formatTo
- Specified by:
formatTo
in interfaceStringBuilderFormattable
- See Also:
-
swapParameters
Replaces this ReusableMessage's parameter array with the specified value and return the original array- Specified by:
swapParameters
in interfaceReusableMessage
- Parameters:
emptyReplacement
- the parameter array that can be used for subsequent uses of this reusable message- Returns:
- the original parameter array
- See Also:
-
getParameterCount
public short getParameterCount()- Specified by:
getParameterCount
in interfaceReusableMessage
-
forEachParameter
- Specified by:
forEachParameter
in interfaceParameterVisitable
-
memento
- Specified by:
memento
in interfaceReusableMessage
-
length
public int length()- Specified by:
length
in interfaceCharSequence
-
charAt
public char charAt(int index) - Specified by:
charAt
in interfaceCharSequence
-
subSequence
- Specified by:
subSequence
in interfaceCharSequence
-
getThrown
Description copied from interface:LogEvent
Gets throwable associated with logging request.Convenience method for
ThrowableProxy.getThrowable();
-
getThrownProxy
Description copied from interface:LogEvent
Gets throwable proxy associated with logging request.- Specified by:
getThrownProxy
in interfaceLogEvent
- Returns:
- throwable, may be null.
-
getContextData
Description copied from interface:LogEvent
Returns theReadOnlyStringMap
object holding context data key-value pairs.Context data (also known as Mapped Diagnostic Context or MDC) is data that is set by the application to be included in all subsequent log events. The default source for context data is the
ThreadContext
(and properties configured on the Logger that logged the event), but users can configure a customContextDataInjector
to inject key-value pairs from any arbitrary source.- Specified by:
getContextData
in interfaceLogEvent
- Returns:
- the
ReadOnlyStringMap
object holding context data key-value pairs - See Also:
-
getContextMap
Description copied from interface:LogEvent
Gets the context map (also know as Mapped Diagnostic Context or MDC).- Specified by:
getContextMap
in interfaceLogEvent
- Returns:
- The context map, never
null
.
-
getContextStack
Description copied from interface:LogEvent
Gets the context stack (also known as Nested Diagnostic Context or NDC).- Specified by:
getContextStack
in interfaceLogEvent
- Returns:
- The context stack, never
null
.
-
getThreadId
public long getThreadId()Description copied from interface:LogEvent
Gets the thread ID.- Specified by:
getThreadId
in interfaceLogEvent
- Returns:
- thread ID.
-
getThreadName
Description copied from interface:LogEvent
Gets the thread name.- Specified by:
getThreadName
in interfaceLogEvent
- Returns:
- thread name, may be null. TODO guess this could go into a thread context object too. (RG) Why?
-
getThreadPriority
public int getThreadPriority()Description copied from interface:LogEvent
Gets the thread priority.- Specified by:
getThreadPriority
in interfaceLogEvent
- Returns:
- thread priority.
-
getSource
Description copied from interface:LogEvent
Gets the source of logging request. -
getTimeMillis
public long getTimeMillis()Description copied from interface:LogEvent
Gets event time in milliseconds since midnight, January 1, 1970 UTC. UseLogEvent.getInstant()
to get higher precision timestamp information if available on this platform.- Specified by:
getTimeMillis
in interfaceLogEvent
- Returns:
- the milliseconds component of this log event's timestamp
- See Also:
-
getInstant
Description copied from interface:LogEvent
Returns the Instant when the message was logged.Caution: if this
LogEvent
implementation is mutable and reused for multiple consecutive log messages, then theInstant
object returned by this method is also mutable and reused. Client code should not keep a reference to the returned object but make a copy instead.- Specified by:
getInstant
in interfaceLogEvent
- Returns:
- the
Instant
holding Instant details for this log event
-
getNanoTime
public long getNanoTime()Description copied from interface:LogEvent
Returns the value of the running Java Virtual Machine's high-resolution time source when this event was created, or a dummy value if it is known that this value will not be used downstream.- Specified by:
getNanoTime
in interfaceLogEvent
- Returns:
- The value of the running Java Virtual Machine's high-resolution time source when this event was created.
-
clear
public void clear()Release references held by ring buffer to allow objects to be garbage-collected. -
createMemento
Creates and returns a new immutable copy of thisRingBufferLogEvent
.- Returns:
- a new immutable copy of the data in this
RingBufferLogEvent
-
initializeBuilder
Initializes the specifiedLog4jLogEvent.Builder
from thisRingBufferLogEvent
.- Parameters:
builder
- the builder whose fields to populate
-