Class StatusLogger

java.lang.Object
org.apache.logging.log4j.spi.AbstractLogger
org.apache.logging.log4j.status.StatusLogger
All Implemented Interfaces:
Serializable, Logger, ExtendedLogger, LocationAwareLogger

public final class StatusLogger extends AbstractLogger
Records events that occur in the logging system. By default, only error messages are logged to System.err. Normally, the Log4j StatusLogger is configured via the root <Configuration status="LEVEL"/> node in a Log4j configuration file. However, this can be overridden via a system property named "log4j2.StatusLogger.level" and will work with any Log4j provider.
See Also:
  • Field Details

    • MAX_STATUS_ENTRIES

      public static final String MAX_STATUS_ENTRIES
      System property that can be configured with the number of entries in the queue. Once the limit is reached older entries will be removed as new entries are added.
      See Also:
    • DEFAULT_STATUS_LISTENER_LEVEL

      public static final String DEFAULT_STATUS_LISTENER_LEVEL
      System property that can be configured with the Level name to use as the default level for StatusListeners.
      See Also:
    • STATUS_DATE_FORMAT

      public static final String STATUS_DATE_FORMAT
      System property that can be configured with a date-time format string to use as the format for timestamps in the status logger output. See SimpleDateFormat for supported formats.
      Since:
      2.11.0
      See Also:
    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • NOT_AVAIL

      private static final String NOT_AVAIL
      See Also:
    • PROPS

      static final PropertiesUtil PROPS
    • MAX_ENTRIES

      private static final int MAX_ENTRIES
    • DEFAULT_STATUS_LEVEL

      private static final String DEFAULT_STATUS_LEVEL
    • DEBUG_ENABLED

      static final boolean DEBUG_ENABLED
    • STATUS_LOGGER

      private static final StatusLogger STATUS_LOGGER
    • logger

      private final SimpleLogger logger
    • listeners

      private final Collection<StatusListener> listeners
    • listenersLock

      private final ReadWriteLock listenersLock
    • messages

      private final Queue<StatusData> messages
    • msgLock

      private final Lock msgLock
    • listenersLevel

      private int listenersLevel
  • Constructor Details

    • StatusLogger

      private StatusLogger(String name, MessageFactory messageFactory, SimpleLoggerFactory loggerFactory)
      Constructs the singleton instance for the STATUS_LOGGER constant.

      This is now the logger level is set:

      1. If the property "log4j2.debug" is "true", then use Level.TRACE, otherwise,
      2. Use Level.ERROR

      This is now the listener level is set:

      1. If the property "log4j2.StatusLogger.level" is set, then use it, otherwise,
      2. Use Level.WARN

      See:

      1. LOG4J2-1813 Provide shorter and more intuitive way to switch on Log4j internal debug logging. If system property "log4j2.debug" is defined, print all status logging.
      2. LOG4J2-3340 StatusLogger's log Level cannot be changed as advertised.

      Parameters:
      name - The logger name.
      messageFactory - The message factory.
  • Method Details

    • getLogger

      public static StatusLogger getLogger()
      Retrieve the StatusLogger.
      Returns:
      The StatusLogger.
    • setLevel

      public void setLevel(Level level)
    • registerListener

      public void registerListener(StatusListener listener)
      Registers a new listener.
      Parameters:
      listener - The StatusListener to register.
    • removeListener

      public void removeListener(StatusListener listener)
      Removes a StatusListener.
      Parameters:
      listener - The StatusListener to remove.
    • updateListenerLevel

      public void updateListenerLevel(Level status)
    • getListeners

      public Iterable<StatusListener> getListeners()
      Returns a thread safe Iterable for the StatusListener.
      Returns:
      An Iterable for the list of StatusListeners.
    • reset

      public void reset()
      Clears the list of status events and listeners.
    • closeSilently

      private static void closeSilently(Closeable resource)
    • getStatusData

      public List<StatusData> getStatusData()
      Returns a List of all events as StatusData objects.
      Returns:
      The list of StatusData objects.
    • clear

      public void clear()
      Clears the list of status events.
    • getLevel

      public Level getLevel()
      Description copied from interface: Logger
      Gets the Level associated with the Logger.
      Returns:
      the Level associate with the Logger.
    • logMessage

      public void logMessage(String fqcn, Level level, Marker marker, Message msg, Throwable t)
      Adds an event.
      Parameters:
      marker - The Marker
      fqcn - The fully qualified class name of the caller
      level - The logging level
      msg - The message associated with the event.
      t - A Throwable or null.
    • getStackTraceElement

      private StackTraceElement getStackTraceElement(String fqcn, StackTraceElement[] stackTrace)
    • isEnabled

      public boolean isEnabled(Level level, Marker marker, String message, Throwable t)
      Description copied from interface: ExtendedLogger
      Tests if logging is enabled.
      Parameters:
      level - The logging Level to check.
      marker - A Marker or null.
      message - The message.
      t - the exception to log, including its stack trace.
      Returns:
      True if logging is enabled, false otherwise.
    • isEnabled

      public boolean isEnabled(Level level, Marker marker, String message)
      Description copied from interface: ExtendedLogger
      Tests if logging is enabled.
      Parameters:
      level - The logging Level to check.
      marker - A Marker or null.
      message - The message.
      Returns:
      True if logging is enabled, false otherwise.
    • isEnabled

      public boolean isEnabled(Level level, Marker marker, String message, Object... params)
      Description copied from interface: ExtendedLogger
      Tests if logging is enabled.
      Parameters:
      level - The logging Level to check.
      marker - A Marker or null.
      message - The message.
      params - The parameters.
      Returns:
      True if logging is enabled, false otherwise.
    • isEnabled

      public boolean isEnabled(Level level, Marker marker, String message, Object p0)
      Description copied from interface: ExtendedLogger
      Tests if logging is enabled.
      Parameters:
      level - The logging Level to check.
      marker - A Marker or null.
      message - The message.
      p0 - the message parameters
      Returns:
      True if logging is enabled, false otherwise.
    • isEnabled

      public boolean isEnabled(Level level, Marker marker, String message, Object p0, Object p1)
      Description copied from interface: ExtendedLogger
      Tests if logging is enabled.
      Parameters:
      level - The logging Level to check.
      marker - A Marker or null.
      message - The message.
      p0 - the message parameters
      p1 - the message parameters
      Returns:
      True if logging is enabled, false otherwise.
    • isEnabled

      public boolean isEnabled(Level level, Marker marker, String message, Object p0, Object p1, Object p2)
      Description copied from interface: ExtendedLogger
      Tests if logging is enabled.
      Parameters:
      level - The logging Level to check.
      marker - A Marker or null.
      message - The message.
      p0 - the message parameters
      p1 - the message parameters
      p2 - the message parameters
      Returns:
      True if logging is enabled, false otherwise.
    • isEnabled

      public boolean isEnabled(Level level, Marker marker, String message, Object p0, Object p1, Object p2, Object p3)
      Description copied from interface: ExtendedLogger
      Tests if logging is enabled.
      Parameters:
      level - The logging Level to check.
      marker - A Marker or null.
      message - The message.
      p0 - the message parameters
      p1 - the message parameters
      p2 - the message parameters
      p3 - the message parameters
      Returns:
      True if logging is enabled, false otherwise.
    • isEnabled

      public boolean isEnabled(Level level, Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4)
      Description copied from interface: ExtendedLogger
      Tests if logging is enabled.
      Parameters:
      level - The logging Level to check.
      marker - A Marker or null.
      message - The message.
      p0 - the message parameters
      p1 - the message parameters
      p2 - the message parameters
      p3 - the message parameters
      p4 - the message parameters
      Returns:
      True if logging is enabled, false otherwise.
    • isEnabled

      public boolean isEnabled(Level level, Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5)
      Description copied from interface: ExtendedLogger
      Tests if logging is enabled.
      Parameters:
      level - The logging Level to check.
      marker - A Marker or null.
      message - The message.
      p0 - the message parameters
      p1 - the message parameters
      p2 - the message parameters
      p3 - the message parameters
      p4 - the message parameters
      p5 - the message parameters
      Returns:
      True if logging is enabled, false otherwise.
    • isEnabled

      public boolean isEnabled(Level level, Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6)
      Description copied from interface: ExtendedLogger
      Determines if logging is enabled.
      Parameters:
      level - The logging Level to check.
      marker - A Marker or null.
      message - The message.
      p0 - the message parameters
      p1 - the message parameters
      p2 - the message parameters
      p3 - the message parameters
      p4 - the message parameters
      p5 - the message parameters
      p6 - the message parameters
      Returns:
      True if logging is enabled, false otherwise.
    • isEnabled

      public boolean isEnabled(Level level, Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7)
      Description copied from interface: ExtendedLogger
      Tests if logging is enabled.
      Parameters:
      level - The logging Level to check.
      marker - A Marker or null.
      message - The message.
      p0 - the message parameters
      p1 - the message parameters
      p2 - the message parameters
      p3 - the message parameters
      p4 - the message parameters
      p5 - the message parameters
      p6 - the message parameters
      p7 - the message parameters
      Returns:
      True if logging is enabled, false otherwise.
    • isEnabled

      public boolean isEnabled(Level level, Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7, Object p8)
      Description copied from interface: ExtendedLogger
      Tests if logging is enabled.
      Parameters:
      level - The logging Level to check.
      marker - A Marker or null.
      message - The message.
      p0 - the message parameters
      p1 - the message parameters
      p2 - the message parameters
      p3 - the message parameters
      p4 - the message parameters
      p5 - the message parameters
      p6 - the message parameters
      p7 - the message parameters
      p8 - the message parameters
      Returns:
      True if logging is enabled, false otherwise.
    • isEnabled

      public boolean isEnabled(Level level, Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7, Object p8, Object p9)
      Description copied from interface: ExtendedLogger
      Tests if logging is enabled.
      Parameters:
      level - The logging Level to check.
      marker - A Marker or null.
      message - The message.
      p0 - the message parameters
      p1 - the message parameters
      p2 - the message parameters
      p3 - the message parameters
      p4 - the message parameters
      p5 - the message parameters
      p6 - the message parameters
      p7 - the message parameters
      p8 - the message parameters
      p9 - the message parameters
      Returns:
      True if logging is enabled, false otherwise.
    • isEnabled

      public boolean isEnabled(Level level, Marker marker, CharSequence message, Throwable t)
      Description copied from interface: ExtendedLogger
      Tests if logging is enabled.
      Parameters:
      level - The logging Level to check.
      marker - A Marker or null.
      message - The message.
      t - A Throwable.
      Returns:
      True if logging is enabled, false otherwise.
    • isEnabled

      public boolean isEnabled(Level level, Marker marker, Object message, Throwable t)
      Description copied from interface: ExtendedLogger
      Tests if logging is enabled.
      Parameters:
      level - The logging Level to check.
      marker - A Marker or null.
      message - The message.
      t - A Throwable.
      Returns:
      True if logging is enabled, false otherwise.
    • isEnabled

      public boolean isEnabled(Level level, Marker marker, Message message, Throwable t)
      Description copied from interface: ExtendedLogger
      Tests if logging is enabled.
      Parameters:
      level - The logging Level to check.
      marker - A Marker or null.
      message - The Message.
      t - A Throwable.
      Returns:
      True if logging is enabled, false otherwise.
    • isEnabled

      public boolean isEnabled(Level level, Marker marker)
      Description copied from interface: Logger
      Checks whether this Logger is enabled for the given Level and Marker.
      Specified by:
      isEnabled in interface Logger
      Overrides:
      isEnabled in class AbstractLogger
      Parameters:
      level - The Level to check
      marker - The Marker to check
      Returns:
      boolean - true if this Logger is enabled for level and marker, false otherwise.