Class MutableLogEvent

java.lang.Object
org.apache.logging.log4j.core.impl.MutableLogEvent
All Implemented Interfaces:
Serializable, LogEvent, ReusableLogEvent, org.apache.logging.log4j.message.Message, org.apache.logging.log4j.message.ParameterVisitable, org.apache.logging.log4j.message.ReusableMessage, org.apache.logging.log4j.util.StringBuilderFormattable

public class MutableLogEvent extends Object implements ReusableLogEvent, org.apache.logging.log4j.message.ReusableMessage, org.apache.logging.log4j.message.ParameterVisitable
Mutable implementation of the ReusableLogEvent interface.
Since:
2.6
See Also:
  • Constructor Details

    • MutableLogEvent

      public MutableLogEvent()
    • MutableLogEvent

      public MutableLogEvent(StringBuilder msgText, Object[] replacementParameters)
  • Method Details

    • toImmutable

      public LogEvent 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 interface LogEvent
      Returns:
      an immutable version of this log event
    • moveValuesFrom

      public void moveValuesFrom(LogEvent event)
      Initialize the fields of this ReusableLogEvent from another event.

      This method is used on async logger ringbuffer slots holding ReusableLogEvent objects in each slot.

      Parameters:
      event - the event to copy data from
    • clear

      public void clear()
      Description copied from interface: ReusableLogEvent
      Clears all references this event has to other objects.
      Specified by:
      clear in interface ReusableLogEvent
    • getLoggerFqcn

      public String getLoggerFqcn()
      Description copied from interface: LogEvent
      Returns the fully qualified class name of the caller of the logging API.
      Specified by:
      getLoggerFqcn in interface LogEvent
      Returns:
      The fully qualified class name of the caller.
    • setLoggerFqcn

      public void setLoggerFqcn(String loggerFqcn)
      Specified by:
      setLoggerFqcn in interface ReusableLogEvent
    • getMarker

      public org.apache.logging.log4j.Marker getMarker()
      Description copied from interface: LogEvent
      Gets the Marker associated with the event.
      Specified by:
      getMarker in interface LogEvent
      Returns:
      Marker or null if no Marker was defined on this LogEvent
    • setMarker

      public void setMarker(org.apache.logging.log4j.Marker marker)
      Specified by:
      setMarker in interface ReusableLogEvent
    • getLevel

      public org.apache.logging.log4j.Level getLevel()
      Description copied from interface: LogEvent
      Gets the level.
      Specified by:
      getLevel in interface LogEvent
      Returns:
      level.
    • setLevel

      public void setLevel(org.apache.logging.log4j.Level level)
      Specified by:
      setLevel in interface ReusableLogEvent
    • getLoggerName

      public String getLoggerName()
      Description copied from interface: LogEvent
      Gets the logger name.
      Specified by:
      getLoggerName in interface LogEvent
      Returns:
      logger name, may be null.
    • setLoggerName

      public void setLoggerName(String loggerName)
      Specified by:
      setLoggerName in interface ReusableLogEvent
    • getMessage

      public org.apache.logging.log4j.message.Message getMessage()
      Description copied from interface: LogEvent
      Gets the message associated with the event.
      Specified by:
      getMessage in interface LogEvent
      Returns:
      message.
    • setMessage

      public void setMessage(org.apache.logging.log4j.message.Message message)
      Specified by:
      setMessage in interface ReusableLogEvent
    • getFormattedMessage

      public String getFormattedMessage()
      Specified by:
      getFormattedMessage in interface org.apache.logging.log4j.message.Message
      See Also:
      • Message.getFormattedMessage()
    • getFormat

      public String getFormat()
      Specified by:
      getFormat in interface org.apache.logging.log4j.message.Message
      See Also:
      • Message.getFormat()
    • getParameters

      public Object[] getParameters()
      Specified by:
      getParameters in interface org.apache.logging.log4j.message.Message
      See Also:
      • Message.getParameters()
    • forEachParameter

      public <S> void forEachParameter(org.apache.logging.log4j.message.ParameterConsumer<S> action, S state)
      Specified by:
      forEachParameter in interface org.apache.logging.log4j.message.ParameterVisitable
    • getThrowable

      public Throwable getThrowable()
      Specified by:
      getThrowable in interface org.apache.logging.log4j.message.Message
      See Also:
      • Message.getThrowable()
    • formatTo

      public void formatTo(StringBuilder buffer)
      Specified by:
      formatTo in interface org.apache.logging.log4j.util.StringBuilderFormattable
      See Also:
      • StringBuilderFormattable.formatTo(StringBuilder)
    • swapParameters

      public Object[] swapParameters(Object[] emptyReplacement)
      Replaces this ReusableMessage's parameter array with the specified value and return the original array
      Specified by:
      swapParameters in interface org.apache.logging.log4j.message.ReusableMessage
      Parameters:
      emptyReplacement - the parameter array that can be used for subsequent uses of this reusable message
      Returns:
      the original parameter array
      See Also:
      • ReusableMessage.swapParameters(Object[])
    • getParameterCount

      public short getParameterCount()
      Specified by:
      getParameterCount in interface org.apache.logging.log4j.message.ReusableMessage
    • memento

      public org.apache.logging.log4j.message.Message memento()
      Specified by:
      memento in interface org.apache.logging.log4j.message.ReusableMessage
    • getThrown

      public Throwable getThrown()
      Description copied from interface: LogEvent
      Gets throwable associated with logging request.
      Specified by:
      getThrown in interface LogEvent
      Returns:
      throwable, may be null.
    • setThrown

      public void setThrown(Throwable thrown)
      Specified by:
      setThrown in interface ReusableLogEvent
    • getTimeMillis

      public long getTimeMillis()
      Description copied from interface: LogEvent
      Gets event time in milliseconds since midnight, January 1, 1970 UTC. Use LogEvent.getInstant() to get higher precision timestamp information if available on this platform.
      Specified by:
      getTimeMillis in interface LogEvent
      Returns:
      the milliseconds component of this log event's timestamp
      See Also:
    • setTimeMillis

      public void setTimeMillis(long timeMillis)
      Specified by:
      setTimeMillis in interface ReusableLogEvent
    • getInstant

      public Instant 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 the Instant 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 interface LogEvent
      Returns:
      the Instant holding Instant details for this log event
    • setInstant

      public void setInstant(Instant instant)
      Specified by:
      setInstant in interface ReusableLogEvent
    • setSource

      public void setSource(StackTraceElement source)
      Specified by:
      setSource in interface ReusableLogEvent
    • getSource

      public StackTraceElement getSource()
      Returns the StackTraceElement for the caller. This will be the entry that occurs right before the first occurrence of FQCN as a class name.
      Specified by:
      getSource in interface LogEvent
      Returns:
      the StackTraceElement for the caller.
    • peekSource

      public @Nullable StackTraceElement peekSource()
      Description copied from interface: LogEvent
      Gets the source of the logging call.

      This method must be side effect free.

      Specified by:
      peekSource in interface LogEvent
      Returns:
      source of logging request or null if currently unknown.
    • getContextData

      public org.apache.logging.log4j.util.StringMap getContextData()
      Description copied from interface: LogEvent
      Returns the ReadOnlyStringMap 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.

      Specified by:
      getContextData in interface LogEvent
      Specified by:
      getContextData in interface ReusableLogEvent
      Returns:
      the ReadOnlyStringMap object holding context data key-value pairs
      See Also:
    • setContextData

      public void setContextData(org.apache.logging.log4j.util.StringMap mutableContextData)
      Specified by:
      setContextData in interface ReusableLogEvent
    • getContextStack

      public org.apache.logging.log4j.ThreadContext.ContextStack getContextStack()
      Description copied from interface: LogEvent
      Gets the context stack (also known as Nested Diagnostic Context or NDC).
      Specified by:
      getContextStack in interface LogEvent
      Returns:
      The context stack, never null.
    • setContextStack

      public void setContextStack(org.apache.logging.log4j.ThreadContext.ContextStack contextStack)
      Specified by:
      setContextStack in interface ReusableLogEvent
    • getThreadId

      public long getThreadId()
      Description copied from interface: LogEvent
      Gets the thread ID.
      Specified by:
      getThreadId in interface LogEvent
      Returns:
      thread ID.
    • setThreadId

      public void setThreadId(long threadId)
      Specified by:
      setThreadId in interface ReusableLogEvent
    • getThreadName

      public String getThreadName()
      Description copied from interface: LogEvent
      Gets the thread name.
      Specified by:
      getThreadName in interface LogEvent
      Returns:
      thread name, may be null.
    • setThreadName

      public void setThreadName(String threadName)
      Specified by:
      setThreadName in interface ReusableLogEvent
    • getThreadPriority

      public int getThreadPriority()
      Description copied from interface: LogEvent
      Gets the thread priority.
      Specified by:
      getThreadPriority in interface LogEvent
      Returns:
      thread priority.
    • setThreadPriority

      public void setThreadPriority(int threadPriority)
      Specified by:
      setThreadPriority in interface ReusableLogEvent
    • 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 a StackTrace snapshot or not before handing off this event to another thread.
      Specified by:
      isIncludeLocation in interface LogEvent
      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 a StackTrace snapshot or not before handing off this event to another thread.
      Specified by:
      setIncludeLocation in interface LogEvent
      Parameters:
      includeLocation - true if the source of the logging request is required downstream, false otherwise.
      See Also:
    • isEndOfBatch

      public boolean isEndOfBatch()
      Description copied from interface: LogEvent
      Returns true if this event is the last one in a batch, false otherwise. Used by asynchronous Loggers and Appenders to signal to buffered downstream components when to flush to disk, as a more efficient alternative to the immediateFlush=true configuration.
      Specified by:
      isEndOfBatch in interface LogEvent
      Returns:
      whether this event is the last one in a batch.
    • 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 the immediateFlush=true configuration.
      Specified by:
      setEndOfBatch in interface LogEvent
      Parameters:
      endOfBatch - true if this event is the last one in a batch, false otherwise.
    • 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 interface LogEvent
      Returns:
      The value of the running Java Virtual Machine's high-resolution time source when this event was created.
    • setNanoTime

      public void setNanoTime(long nanoTime)
      Specified by:
      setNanoTime in interface ReusableLogEvent
    • initializeBuilder

      public void initializeBuilder(Log4jLogEvent.Builder builder)
      Description copied from interface: ReusableLogEvent
      Initializes the specified Log4jLogEvent.Builder from this ReusableLogEvent.
      Specified by:
      initializeBuilder in interface ReusableLogEvent
      Parameters:
      builder - the builder whose fields to populate