Package org.apache.logging.log4j.status
Class StatusLogger
- java.lang.Object
-
- org.apache.logging.log4j.spi.AbstractLogger
-
- org.apache.logging.log4j.status.StatusLogger
-
- All Implemented Interfaces:
java.io.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 toSystem.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:
SimpleLogger
,SimpleLoggerContext
, Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private class
StatusLogger.BoundedQueue<E>
Queues for status events.
-
Field Summary
Fields Modifier and Type Field Description (package private) static boolean
DEBUG_ENABLED
private static java.lang.String
DEFAULT_STATUS_LEVEL
static java.lang.String
DEFAULT_STATUS_LISTENER_LEVEL
System property that can be configured with theLevel
name to use as the default level forStatusListener
s.private java.util.Collection<StatusListener>
listeners
private int
listenersLevel
private java.util.concurrent.locks.ReadWriteLock
listenersLock
private SimpleLogger
logger
private static int
MAX_ENTRIES
static java.lang.String
MAX_STATUS_ENTRIES
System property that can be configured with the number of entries in the queue.private java.util.Queue<StatusData>
messages
private java.util.concurrent.locks.Lock
msgLock
private static java.lang.String
NOT_AVAIL
(package private) static PropertiesUtil
PROPS
private static long
serialVersionUID
static java.lang.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.private static StatusLogger
STATUS_LOGGER
-
Fields inherited from class org.apache.logging.log4j.spi.AbstractLogger
CATCHING_MARKER, DEFAULT_FLOW_MESSAGE_FACTORY_CLASS, DEFAULT_MESSAGE_FACTORY_CLASS, ENTRY_MARKER, EXCEPTION_MARKER, EXIT_MARKER, FLOW_MARKER, name, THROWING_MARKER
-
-
Constructor Summary
Constructors Modifier Constructor Description private
StatusLogger(java.lang.String name, MessageFactory messageFactory, SimpleLoggerFactory loggerFactory)
Constructs the singleton instance for the STATUS_LOGGER constant.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
clear()
Clears the list of status events.private static void
closeSilently(java.io.Closeable resource)
Level
getLevel()
Gets the Level associated with the Logger.java.lang.Iterable<StatusListener>
getListeners()
Returns a thread safe Iterable for the StatusListener.static StatusLogger
getLogger()
Retrieve the StatusLogger.private java.lang.StackTraceElement
getStackTraceElement(java.lang.String fqcn, java.lang.StackTraceElement[] stackTrace)
java.util.List<StatusData>
getStatusData()
Returns a List of all events as StatusData objects.boolean
isEnabled(Level level, Marker marker)
Checks whether this Logger is enabled for the given Level and Marker.boolean
isEnabled(Level level, Marker marker, java.lang.CharSequence message, java.lang.Throwable t)
Tests if logging is enabled.boolean
isEnabled(Level level, Marker marker, java.lang.Object message, java.lang.Throwable t)
Tests if logging is enabled.boolean
isEnabled(Level level, Marker marker, java.lang.String message)
Tests if logging is enabled.boolean
isEnabled(Level level, Marker marker, java.lang.String message, java.lang.Object p0)
Tests if logging is enabled.boolean
isEnabled(Level level, Marker marker, java.lang.String message, java.lang.Object... params)
Tests if logging is enabled.boolean
isEnabled(Level level, Marker marker, java.lang.String message, java.lang.Object p0, java.lang.Object p1)
Tests if logging is enabled.boolean
isEnabled(Level level, Marker marker, java.lang.String message, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2)
Tests if logging is enabled.boolean
isEnabled(Level level, Marker marker, java.lang.String message, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3)
Tests if logging is enabled.boolean
isEnabled(Level level, Marker marker, java.lang.String message, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.Object p4)
Tests if logging is enabled.boolean
isEnabled(Level level, Marker marker, java.lang.String message, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.Object p4, java.lang.Object p5)
Tests if logging is enabled.boolean
isEnabled(Level level, Marker marker, java.lang.String message, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.Object p4, java.lang.Object p5, java.lang.Object p6)
Determines if logging is enabled.boolean
isEnabled(Level level, Marker marker, java.lang.String message, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.Object p4, java.lang.Object p5, java.lang.Object p6, java.lang.Object p7)
Tests if logging is enabled.boolean
isEnabled(Level level, Marker marker, java.lang.String message, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.Object p4, java.lang.Object p5, java.lang.Object p6, java.lang.Object p7, java.lang.Object p8)
Tests if logging is enabled.boolean
isEnabled(Level level, Marker marker, java.lang.String message, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.Object p4, java.lang.Object p5, java.lang.Object p6, java.lang.Object p7, java.lang.Object p8, java.lang.Object p9)
Tests if logging is enabled.boolean
isEnabled(Level level, Marker marker, java.lang.String message, java.lang.Throwable t)
Tests if logging is enabled.boolean
isEnabled(Level level, Marker marker, Message message, java.lang.Throwable t)
Tests if logging is enabled.void
logMessage(java.lang.String fqcn, Level level, Marker marker, Message msg, java.lang.Throwable t)
Adds an event.void
registerListener(StatusListener listener)
Registers a new listener.void
removeListener(StatusListener listener)
Removes a StatusListener.void
reset()
Clears the list of status events and listeners.void
setLevel(Level level)
void
updateListenerLevel(Level status)
-
Methods inherited from class org.apache.logging.log4j.spi.AbstractLogger
always, atDebug, atError, atFatal, atInfo, atLevel, atTrace, atWarn, catching, catching, catching, catchingMsg, checkMessageFactory, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, enter, enter, enter, enter, enter, entry, entry, entry, entryMsg, entryMsg, entryMsg, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, error, exit, exit, exit, exit, exitMsg, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, fatal, getFlowMessageFactory, getLogBuilder, getMessageFactory, getName, getRecursionDepth, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, info, isDebugEnabled, isDebugEnabled, isEnabled, isErrorEnabled, isErrorEnabled, isFatalEnabled, isFatalEnabled, isInfoEnabled, isInfoEnabled, isTraceEnabled, isTraceEnabled, isWarnEnabled, isWarnEnabled, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, log, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logIfEnabled, logMessage, logMessage, logMessage, logMessage, logMessage, logMessage, logMessage, logMessage, logMessage, logMessage, logMessage, logMessage, logMessage, logMessage, logMessage, logMessage, logMessage, logMessage, logMessage, printf, printf, requiresLocation, throwing, throwing, throwing, throwingMsg, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, traceEntry, traceEntry, traceEntry, traceEntry, traceEntry, traceExit, traceExit, traceExit, traceExit, traceExit, traceExit, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn
-
-
-
-
Field Detail
-
MAX_STATUS_ENTRIES
public static final java.lang.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:
- Constant Field Values
-
DEFAULT_STATUS_LISTENER_LEVEL
public static final java.lang.String DEFAULT_STATUS_LISTENER_LEVEL
System property that can be configured with theLevel
name to use as the default level forStatusListener
s.- See Also:
- Constant Field Values
-
STATUS_DATE_FORMAT
public static final java.lang.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. SeeSimpleDateFormat
for supported formats.- Since:
- 2.11.0
- See Also:
- Constant Field Values
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
NOT_AVAIL
private static final java.lang.String NOT_AVAIL
- See Also:
- Constant Field Values
-
PROPS
static final PropertiesUtil PROPS
-
MAX_ENTRIES
private static final int MAX_ENTRIES
-
DEFAULT_STATUS_LEVEL
private static final java.lang.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 java.util.Collection<StatusListener> listeners
-
listenersLock
private final java.util.concurrent.locks.ReadWriteLock listenersLock
-
messages
private final java.util.Queue<StatusData> messages
-
msgLock
private final java.util.concurrent.locks.Lock msgLock
-
listenersLevel
private int listenersLevel
-
-
Constructor Detail
-
StatusLogger
private StatusLogger(java.lang.String name, MessageFactory messageFactory, SimpleLoggerFactory loggerFactory)
Constructs the singleton instance for the STATUS_LOGGER constant.This is now the logger level is set:
- If the property "log4j2.debug" is
"true"
, then useLevel.TRACE
, otherwise, - Use
Level.ERROR
This is now the listener level is set:
- If the property "log4j2.StatusLogger.level" is set, then use it, otherwise,
- Use
Level.WARN
See:
- 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.
- LOG4J2-3340 StatusLogger's log Level cannot be changed as advertised.
- Parameters:
name
- The logger name.messageFactory
- The message factory.
- If the property "log4j2.debug" is
-
-
Method Detail
-
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 java.lang.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(java.io.Closeable resource)
-
getStatusData
public java.util.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(java.lang.String fqcn, Level level, Marker marker, Message msg, java.lang.Throwable t)
Adds an event.- Parameters:
marker
- The Markerfqcn
- The fully qualified class name of the callerlevel
- The logging levelmsg
- The message associated with the event.t
- A Throwable or null.
-
getStackTraceElement
private java.lang.StackTraceElement getStackTraceElement(java.lang.String fqcn, java.lang.StackTraceElement[] stackTrace)
-
isEnabled
public boolean isEnabled(Level level, Marker marker, java.lang.String message, java.lang.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, java.lang.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, java.lang.String message, java.lang.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, java.lang.String message, java.lang.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, java.lang.String message, java.lang.Object p0, java.lang.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 parametersp1
- the message parameters- Returns:
- True if logging is enabled, false otherwise.
-
isEnabled
public boolean isEnabled(Level level, Marker marker, java.lang.String message, java.lang.Object p0, java.lang.Object p1, java.lang.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 parametersp1
- the message parametersp2
- the message parameters- Returns:
- True if logging is enabled, false otherwise.
-
isEnabled
public boolean isEnabled(Level level, Marker marker, java.lang.String message, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.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 parametersp1
- the message parametersp2
- the message parametersp3
- the message parameters- Returns:
- True if logging is enabled, false otherwise.
-
isEnabled
public boolean isEnabled(Level level, Marker marker, java.lang.String message, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.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 parametersp1
- the message parametersp2
- the message parametersp3
- the message parametersp4
- the message parameters- Returns:
- True if logging is enabled, false otherwise.
-
isEnabled
public boolean isEnabled(Level level, Marker marker, java.lang.String message, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.Object p4, java.lang.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 parametersp1
- the message parametersp2
- the message parametersp3
- the message parametersp4
- the message parametersp5
- the message parameters- Returns:
- True if logging is enabled, false otherwise.
-
isEnabled
public boolean isEnabled(Level level, Marker marker, java.lang.String message, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.Object p4, java.lang.Object p5, java.lang.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 parametersp1
- the message parametersp2
- the message parametersp3
- the message parametersp4
- the message parametersp5
- the message parametersp6
- the message parameters- Returns:
- True if logging is enabled, false otherwise.
-
isEnabled
public boolean isEnabled(Level level, Marker marker, java.lang.String message, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.Object p4, java.lang.Object p5, java.lang.Object p6, java.lang.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 parametersp1
- the message parametersp2
- the message parametersp3
- the message parametersp4
- the message parametersp5
- the message parametersp6
- the message parametersp7
- the message parameters- Returns:
- True if logging is enabled, false otherwise.
-
isEnabled
public boolean isEnabled(Level level, Marker marker, java.lang.String message, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.Object p4, java.lang.Object p5, java.lang.Object p6, java.lang.Object p7, java.lang.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 parametersp1
- the message parametersp2
- the message parametersp3
- the message parametersp4
- the message parametersp5
- the message parametersp6
- the message parametersp7
- the message parametersp8
- the message parameters- Returns:
- True if logging is enabled, false otherwise.
-
isEnabled
public boolean isEnabled(Level level, Marker marker, java.lang.String message, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.Object p4, java.lang.Object p5, java.lang.Object p6, java.lang.Object p7, java.lang.Object p8, java.lang.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 parametersp1
- the message parametersp2
- the message parametersp3
- the message parametersp4
- the message parametersp5
- the message parametersp6
- the message parametersp7
- the message parametersp8
- the message parametersp9
- the message parameters- Returns:
- True if logging is enabled, false otherwise.
-
isEnabled
public boolean isEnabled(Level level, Marker marker, java.lang.CharSequence message, java.lang.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, java.lang.Object message, java.lang.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, java.lang.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 interfaceLogger
- Overrides:
isEnabled
in classAbstractLogger
- Parameters:
level
- The Level to checkmarker
- The Marker to check- Returns:
- boolean -
true
if this Logger is enabled for level and marker,false
otherwise.
-
-