public class RingBufferLogEvent extends java.lang.Object implements LogEvent, ReusableMessage, java.lang.CharSequence
| Modifier and Type | Class and Description |
|---|---|
private static class |
RingBufferLogEvent.Factory
Creates the events that will be put in the RingBuffer.
|
| Modifier and Type | Field and Description |
|---|---|
private AsyncLogger |
asyncLogger |
private StringMap |
contextData |
private ThreadContext.ContextStack |
contextStack |
private long |
currentTimeMillis |
private static Message |
EMPTY |
private boolean |
endOfBatch |
static RingBufferLogEvent.Factory |
FACTORY
The
EventFactory for RingBufferLogEvents. |
private java.lang.String |
fqcn |
private boolean |
includeLocation |
private Level |
level |
private java.lang.StackTraceElement |
location |
private java.lang.String |
loggerName |
private Marker |
marker |
private Message |
message |
private java.lang.StringBuilder |
messageText |
private long |
nanoTime |
private short |
parameterCount |
private java.lang.Object[] |
parameters |
private static long |
serialVersionUID |
private long |
threadId |
private java.lang.String |
threadName |
private int |
threadPriority |
private java.lang.Throwable |
thrown |
private ThrowableProxy |
thrownProxy |
| Constructor and Description |
|---|
RingBufferLogEvent() |
| Modifier and Type | Method and Description |
|---|---|
private boolean |
canFormatMessageInBackground(Message message) |
char |
charAt(int index) |
void |
clear()
Release references held by ring buffer to allow objects to be garbage-collected.
|
LogEvent |
createMemento()
Creates and returns a new immutable copy of this
RingBufferLogEvent. |
void |
execute(boolean endOfBatch)
Event processor that reads the event from the ringbuffer can call this method.
|
void |
formatTo(java.lang.StringBuilder buffer)
Writes a text representation of this object into the specified
StringBuilder, ideally without allocating
temporary objects. |
ReadOnlyStringMap |
getContextData()
Returns the
ReadOnlyStringMap object holding context data key-value pairs. |
java.util.Map<java.lang.String,java.lang.String> |
getContextMap()
Gets the context map (also know as Mapped Diagnostic Context or MDC).
|
ThreadContext.ContextStack |
getContextStack()
Gets the context stack (also known as Nested Diagnostic Context or NDC).
|
java.lang.String |
getFormat()
Gets the format portion of the Message.
|
java.lang.String |
getFormattedMessage()
Gets the Message formatted as a String.
|
Level |
getLevel()
Gets the level.
|
java.lang.String |
getLoggerFqcn()
Returns the fully qualified class name of the caller of the logging API.
|
java.lang.String |
getLoggerName()
Gets the logger name.
|
Marker |
getMarker()
Gets the Marker associated with the event.
|
Message |
getMessage()
Gets the message associated with the event.
|
private java.lang.StringBuilder |
getMessageTextForWriting() |
long |
getNanoTime()
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.
|
private Message |
getNonNullImmutableMessage() |
short |
getParameterCount()
Returns the number of parameters that was used to initialize this reusable message for the current content.
|
java.lang.Object[] |
getParameters()
Gets parameter values, if any.
|
java.lang.StackTraceElement |
getSource()
Gets the source of logging request.
|
long |
getThreadId()
Gets the thread ID.
|
java.lang.String |
getThreadName()
Gets the thread name.
|
int |
getThreadPriority()
Gets the thread priority.
|
java.lang.Throwable |
getThrowable()
Gets the throwable, if any.
|
java.lang.Throwable |
getThrown()
Gets throwable associated with logging request.
|
ThrowableProxy |
getThrownProxy()
Gets throwable proxy associated with logging request.
|
long |
getTimeMillis()
Gets event time in milliseconds since midnight, January 1, 1970 UTC.
|
void |
initializeBuilder(Log4jLogEvent.Builder builder)
Initializes the specified
Log4jLogEvent.Builder from this RingBufferLogEvent. |
boolean |
isEndOfBatch()
Returns
true if this event is the end of a batch, false otherwise. |
boolean |
isIncludeLocation()
Returns whether the source of the logging request is required downstream.
|
int |
length() |
Message |
memento()
Returns an immutable snapshot of the current internal state of this reusable message.
|
(package private) void |
setContextData(StringMap contextData) |
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.
|
private void |
setMessage(Message msg) |
void |
setValues(AsyncLogger anAsyncLogger,
java.lang.String aLoggerName,
Marker aMarker,
java.lang.String theFqcn,
Level aLevel,
Message msg,
java.lang.Throwable aThrowable,
StringMap mutableContextData,
ThreadContext.ContextStack aContextStack,
long threadId,
java.lang.String threadName,
int threadPriority,
java.lang.StackTraceElement aLocation,
long aCurrentTimeMillis,
long aNanoTime) |
java.lang.CharSequence |
subSequence(int start,
int end) |
java.lang.Object[] |
swapParameters(java.lang.Object[] emptyReplacement)
Replaces this ReusableMessage's parameter array with the specified value and return the original array
|
LogEvent |
toImmutable()
Returns an immutable version of this log event, which MAY BE a copy of this event.
|
private void |
trimMessageText() |
private void |
writeObject(java.io.ObjectOutputStream out) |
public static final RingBufferLogEvent.Factory FACTORY
EventFactory for RingBufferLogEvents.private static final long serialVersionUID
private static final Message EMPTY
private int threadPriority
private long threadId
private long currentTimeMillis
private long nanoTime
private short parameterCount
private boolean includeLocation
private boolean endOfBatch
private Level level
private java.lang.String threadName
private java.lang.String loggerName
private Message message
private java.lang.StringBuilder messageText
private java.lang.Object[] parameters
private transient java.lang.Throwable thrown
private ThrowableProxy thrownProxy
private StringMap contextData
private Marker marker
private java.lang.String fqcn
private java.lang.StackTraceElement location
private ThreadContext.ContextStack contextStack
private transient AsyncLogger asyncLogger
public void setValues(AsyncLogger anAsyncLogger, java.lang.String aLoggerName, Marker aMarker, java.lang.String theFqcn, Level aLevel, Message msg, java.lang.Throwable aThrowable, StringMap mutableContextData, ThreadContext.ContextStack aContextStack, long threadId, java.lang.String threadName, int threadPriority, java.lang.StackTraceElement aLocation, long aCurrentTimeMillis, long aNanoTime)
public LogEvent toImmutable()
LogEventtoImmutable in interface LogEventprivate void setMessage(Message msg)
private boolean canFormatMessageInBackground(Message message)
private java.lang.StringBuilder getMessageTextForWriting()
public void execute(boolean endOfBatch)
endOfBatch - flag to indicate if this is the last event in a batch from the RingBufferpublic boolean isEndOfBatch()
true if this event is the end of a batch, false otherwise.isEndOfBatch in interface LogEventtrue if this event is the end of a batch, false otherwisepublic void setEndOfBatch(boolean endOfBatch)
LogEventimmediateFlush=true configuration.setEndOfBatch in interface LogEventendOfBatch - true if this event is the last one in a batch, false otherwise.public boolean isIncludeLocation()
LogEventStackTrace snapshot or not before handing off this event to
another thread.isIncludeLocation in interface LogEventtrue if the source of the logging request is required downstream, false otherwise.LogEvent.getSource()public void setIncludeLocation(boolean includeLocation)
LogEventStackTrace snapshot or not before handing off this event to
another thread.setIncludeLocation in interface LogEventincludeLocation - true if the source of the logging request is required downstream, false
otherwise.LogEvent.getSource()public java.lang.String getLoggerName()
LogEventgetLoggerName in interface LogEventnull.public Marker getMarker()
LogEventpublic java.lang.String getLoggerFqcn()
LogEventgetLoggerFqcn in interface LogEventpublic Message getMessage()
LogEventgetMessage in interface LogEventpublic java.lang.String getFormattedMessage()
Message
When configured to log asynchronously, this method is called before the Message is queued, unless this
message implements ReusableMessage or is annotated with AsynchronouslyFormattable.
This gives the Message implementation class a chance to create a formatted message String with the current value
of any mutable objects.
The intention is that the Message implementation caches this formatted message and returns it on subsequent
calls. (See LOG4J2-763.)
When logging synchronously, this method will not be called for Messages that implement the
StringBuilderFormattable interface: instead, the
formatTo(StringBuilder) method will be called so the
Message can format its contents without creating intermediate String objects.
getFormattedMessage in interface MessageMessage.getFormattedMessage()public java.lang.String getFormat()
MessagegetFormat in interface MessageMessage.getFormat()public java.lang.Object[] getParameters()
MessagegetParameters in interface MessageMessage.getParameters()public java.lang.Throwable getThrowable()
MessagegetThrowable in interface MessageMessage.getThrowable()public void formatTo(java.lang.StringBuilder buffer)
StringBuilderFormattableStringBuilder, ideally without allocating
temporary objects.formatTo in interface StringBuilderFormattablebuffer - the StringBuilder to write intoStringBuilderFormattable.formatTo(StringBuilder)public java.lang.Object[] swapParameters(java.lang.Object[] emptyReplacement)
swapParameters in interface ReusableMessageemptyReplacement - the parameter array that can be used for subsequent uses of this reusable messageReusableMessage.swapParameters(Object[])public short getParameterCount()
ReusableMessage
The parameter array returned by ReusableMessage.swapParameters(Object[]) may be larger than the actual number of
parameters. Callers should use this method to determine how many elements the array contains.
getParameterCount in interface ReusableMessagepublic Message memento()
ReusableMessagememento in interface ReusableMessagepublic int length()
length in interface java.lang.CharSequencepublic char charAt(int index)
charAt in interface java.lang.CharSequencepublic java.lang.CharSequence subSequence(int start,
int end)
subSequence in interface java.lang.CharSequenceprivate Message getNonNullImmutableMessage()
public java.lang.Throwable getThrown()
LogEventConvenience method for ThrowableProxy.getThrowable();
public ThrowableProxy getThrownProxy()
LogEventgetThrownProxy in interface LogEventpublic ReadOnlyStringMap getContextData()
LogEventReadOnlyStringMap 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 custom ContextDataInjector
to inject key-value pairs from any arbitrary source.
getContextData in interface LogEventReadOnlyStringMap object holding context data key-value pairsContextDataInjector,
ThreadContextvoid setContextData(StringMap contextData)
public java.util.Map<java.lang.String,java.lang.String> getContextMap()
LogEventgetContextMap in interface LogEventnull.public ThreadContext.ContextStack getContextStack()
LogEventgetContextStack in interface LogEventnull.public long getThreadId()
LogEventgetThreadId in interface LogEventpublic java.lang.String getThreadName()
LogEventgetThreadName in interface LogEventpublic int getThreadPriority()
LogEventgetThreadPriority in interface LogEventpublic java.lang.StackTraceElement getSource()
LogEventpublic long getTimeMillis()
LogEventgetTimeMillis in interface LogEventSystem.currentTimeMillis()public long getNanoTime()
LogEventgetNanoTime in interface LogEventpublic void clear()
private void trimMessageText()
private void writeObject(java.io.ObjectOutputStream out)
throws java.io.IOException
java.io.IOExceptionpublic LogEvent createMemento()
RingBufferLogEvent.RingBufferLogEventpublic void initializeBuilder(Log4jLogEvent.Builder builder)
Log4jLogEvent.Builder from this RingBufferLogEvent.builder - the builder whose fields to populate