Class ReusableLogEventFactory

java.lang.Object
org.apache.logging.log4j.core.impl.ReusableLogEventFactory
All Implemented Interfaces:
LocationAwareLogEventFactory, LogEventFactory

public class ReusableLogEventFactory extends Object implements LogEventFactory, LocationAwareLogEventFactory
Garbage-free LogEventFactory that reuses a single mutable log event.
Since:
2.6
  • Constructor Details

    • ReusableLogEventFactory

      public ReusableLogEventFactory()
  • Method Details

    • createEvent

      public LogEvent createEvent(String loggerName, Marker marker, String fqcn, Level level, Message message, List<Property> properties, Throwable t)
      Creates a log event.
      Specified by:
      createEvent in interface LogEventFactory
      Parameters:
      loggerName - The name of the Logger.
      marker - An optional Marker.
      fqcn - The fully qualified class name of the caller.
      level - The event Level.
      message - The Message.
      properties - Properties to be added to the log event.
      t - An optional Throwable.
      Returns:
      The LogEvent.
    • createEvent

      public LogEvent createEvent(String loggerName, Marker marker, String fqcn, StackTraceElement location, Level level, Message message, List<Property> properties, Throwable t)
      Creates a log event.

      Implementation note: This method mutates the state of the message parameter:

      1. If the message is a ReusableMessage, this method will remove its parameter references, which prevents it from being used again.
      2. Otherwise the lazy Message.getFormattedMessage() message might be called. See log4j2.formatMsgAsync for details.
      Specified by:
      createEvent in interface LocationAwareLogEventFactory
      Specified by:
      createEvent in interface LogEventFactory
      Parameters:
      loggerName - The name of the Logger.
      marker - An optional Marker.
      fqcn - The fully qualified class name of the caller.
      location - The location of the caller.
      level - The event Level.
      message - The log message. The object passed will be modified by this method and should not be reused.
      properties - Properties to be added to the log event.
      t - An optional Throwable.
      Returns:
      The LogEvent.
    • release

      public static void release(LogEvent logEvent)
      Switches the reserved flag off if the specified event is a MutableLogEvent, otherwise does nothing. This flag is used internally to verify that a reusable log event is no longer in use and can be reused.
      Parameters:
      logEvent - the log event to make available again
      Since:
      2.7