Class Log4jLogEvent

java.lang.Object
org.apache.logging.log4j.core.impl.Log4jLogEvent
All Implemented Interfaces:
Serializable, LogEvent

public class Log4jLogEvent extends Object implements LogEvent
Implementation of a LogEvent.
See Also:
  • Constructor Details

    • Log4jLogEvent

      public Log4jLogEvent()
    • Log4jLogEvent

      @Deprecated public Log4jLogEvent(long timestamp)
      Deprecated.
      use Log4jLogEvent.Builder instead. This constructor will be removed in an upcoming release.
    • Log4jLogEvent

      @Deprecated public Log4jLogEvent(String loggerName, Marker marker, String loggerFQCN, Level level, Message message, Throwable t)
      Deprecated.
      use Log4jLogEvent.Builder instead. This constructor will be removed in an upcoming release.
      Constructor.
      Parameters:
      loggerName - The name of the Logger.
      marker - The Marker or null.
      loggerFQCN - The fully qualified class name of the caller.
      level - The logging Level.
      message - The Message.
      t - A Throwable or null.
    • Log4jLogEvent

      public Log4jLogEvent(String loggerName, Marker marker, String loggerFQCN, Level level, Message message, List<Property> properties, Throwable t)
      Constructor.
      Parameters:
      loggerName - The name of the Logger.
      marker - The Marker or null.
      loggerFQCN - The fully qualified class name of the caller.
      level - The logging Level.
      message - The Message.
      properties - the properties to be merged with ThreadContext key-value pairs into the event's ReadOnlyStringMap.
      t - A Throwable or null.
    • Log4jLogEvent

      public Log4jLogEvent(String loggerName, Marker marker, String loggerFQCN, StackTraceElement source, Level level, Message message, List<Property> properties, Throwable t)
      Constructor.
      Parameters:
      loggerName - The name of the Logger.
      marker - The Marker or null.
      loggerFQCN - The fully qualified class name of the caller.
      level - The logging Level.
      message - The Message.
      properties - the properties to be merged with ThreadContext key-value pairs into the event's ReadOnlyStringMap.
      t - A Throwable or null.
    • Log4jLogEvent

      @Deprecated public Log4jLogEvent(String loggerName, Marker marker, String loggerFQCN, Level level, Message message, Throwable t, Map<String,String> mdc, ThreadContext.ContextStack ndc, String threadName, StackTraceElement location, long timestampMillis)
      Deprecated.
      use Log4jLogEvent.Builder instead. This constructor will be removed in an upcoming release.
      Constructor.
      Parameters:
      loggerName - The name of the Logger.
      marker - The Marker or null.
      loggerFQCN - The fully qualified class name of the caller.
      level - The logging Level.
      message - The Message.
      t - A Throwable or null.
      mdc - The mapped diagnostic context.
      ndc - the nested diagnostic context.
      threadName - The name of the thread.
      location - The locations of the caller.
      timestampMillis - The timestamp of the event.
  • Method Details

    • newBuilder

      public static Log4jLogEvent.Builder newBuilder()
      Returns a new empty Log4jLogEvent.Builder with all fields empty.
      Returns:
      a new empty builder.
    • createEvent

      @Deprecated public static Log4jLogEvent createEvent(String loggerName, Marker marker, String loggerFQCN, Level level, Message message, Throwable thrown, ThrowableProxy thrownProxy, Map<String,String> mdc, ThreadContext.ContextStack ndc, String threadName, StackTraceElement location, long timestamp)
      Deprecated.
      use Log4jLogEvent.Builder instead. This method will be removed in an upcoming release.
      Create a new LogEvent.
      Parameters:
      loggerName - The name of the Logger.
      marker - The Marker or null.
      loggerFQCN - The fully qualified class name of the caller.
      level - The logging Level.
      message - The Message.
      thrown - A Throwable or null.
      thrownProxy - A ThrowableProxy or null.
      mdc - The mapped diagnostic context.
      ndc - the nested diagnostic context.
      threadName - The name of the thread.
      location - The locations of the caller.
      timestamp - The timestamp of the event.
      Returns:
      a new LogEvent
    • getNanoClock

      public static NanoClock getNanoClock()
      Returns the NanoClock to use for creating the nanoTime timestamp of log events.
      Returns:
      the NanoClock to use for creating the nanoTime timestamp of log events
    • setNanoClock

      public static void setNanoClock(NanoClock nanoClock)
      Sets the NanoClock to use for creating the nanoTime timestamp of log events.

      FOR INTERNAL USE. This method may be called with a different NanoClock implementation when the configuration changes.

      Parameters:
      nanoClock - the NanoClock to use for creating the nanoTime timestamp of log events
    • asBuilder

      public Log4jLogEvent.Builder asBuilder()
      Returns a new fully initialized Log4jLogEvent.Builder containing a copy of all fields of this event.
      Returns:
      a new fully initialized builder.
    • toImmutable

      public Log4jLogEvent 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
    • getLevel

      public Level getLevel()
      Returns the logging Level.
      Specified by:
      getLevel in interface LogEvent
      Returns:
      the Level associated with this event.
    • getLoggerName

      public String getLoggerName()
      Returns the name of the Logger used to generate the event.
      Specified by:
      getLoggerName in interface LogEvent
      Returns:
      The Logger name.
    • getMessage

      public Message getMessage()
      Returns the Message associated with the event.
      Specified by:
      getMessage in interface LogEvent
      Returns:
      The Message.
    • makeMessageImmutable

      public void makeMessageImmutable()
    • getThreadId

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

      public String getThreadName()
      Returns the name of the Thread on which the event was generated.
      Specified by:
      getThreadName in interface LogEvent
      Returns:
      The name of the Thread.
    • getThreadPriority

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

      public long getTimeMillis()
      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:
    • getInstant

      public Instant getInstant()
      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
      Since:
      2.11
    • getThrown

      public Throwable getThrown()
      Returns the Throwable associated with the event, or null.
      Specified by:
      getThrown in interface LogEvent
      Returns:
      The Throwable associated with the event.
    • getThrownProxy

      public ThrowableProxy getThrownProxy()
      Returns the ThrowableProxy associated with the event, or null.
      Specified by:
      getThrownProxy in interface LogEvent
      Returns:
      The ThrowableProxy associated with the event.
    • getMarker

      public Marker getMarker()
      Returns the Marker associated with the event, or null.
      Specified by:
      getMarker in interface LogEvent
      Returns:
      the Marker associated with the event.
    • getLoggerFqcn

      public String getLoggerFqcn()
      The fully qualified class name of the class that was called by the caller.
      Specified by:
      getLoggerFqcn in interface LogEvent
      Returns:
      the fully qualified class name of the class that is performing logging.
    • getContextData

      public ReadOnlyStringMap getContextData()
      Returns the ReadOnlyStringMap containing context data key-value pairs.
      Specified by:
      getContextData in interface LogEvent
      Returns:
      the ReadOnlyStringMap containing context data key-value pairs
      Since:
      2.7
      See Also:
    • getContextMap

      public Map<String,String> getContextMap()
      Returns the immutable copy of the ThreadContext Map.
      Specified by:
      getContextMap in interface LogEvent
      Returns:
      The context Map.
    • getContextStack

      public ThreadContext.ContextStack getContextStack()
      Returns an immutable copy of the ThreadContext stack.
      Specified by:
      getContextStack in interface LogEvent
      Returns:
      The context Stack.
    • 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.
    • 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.
    • writeReplace

      protected Object writeReplace()
      Creates a LogEventProxy that can be serialized.
      Returns:
      a LogEventProxy.
    • serialize

      public static Serializable serialize(LogEvent event, boolean includeLocation)
      Take a snapshot of the specified LogEvent.
      Parameters:
      event - the event to take a snapshot of
      includeLocation - if true, this method will obtain caller location information
      Returns:
      snapshot of the event as a Serializable object
      See Also:
    • serialize

      public static Serializable serialize(Log4jLogEvent event, boolean includeLocation)
      Take a snapshot of the specified Log4jLogEvent.
      Parameters:
      event - the event to take a snapshot of
      includeLocation - if true, this method will obtain caller location information
      Returns:
      snapshot of the event as a Serializable object
      See Also:
    • canDeserialize

      public static boolean canDeserialize(Serializable event)
    • deserialize

      public static Log4jLogEvent deserialize(Serializable event)
    • createMemento

      public static LogEvent createMemento(LogEvent logEvent)
    • createMemento

      public static Log4jLogEvent createMemento(LogEvent event, boolean includeLocation)
      Creates and returns a new immutable copy of this Log4jLogEvent.
      Returns:
      a new immutable copy of the data in this Log4jLogEvent
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object