Package org.apache.logging.log4j.core
Class Logger
- java.lang.Object
-
- org.apache.logging.log4j.spi.AbstractLogger
-
- org.apache.logging.log4j.core.Logger
-
- All Implemented Interfaces:
Serializable
,Logger
,ExtendedLogger
,LocationAwareLogger
,Supplier<LoggerConfig>
- Direct Known Subclasses:
AsyncLogger
public class Logger extends AbstractLogger implements Supplier<LoggerConfig>
The core implementation of theLogger
interface. Besides providing an implementation of all the Logger methods, this class also provides some convenience methods for Log4j 1.x compatibility as well as access to theFilters
andAppenders
associated with this Logger. Note that access to these underlying objects is provided primarily for use in unit tests or bridging legacy Log4j 1.x code. Future versions of this class may or may not include the various methods that are noted as not being part of the public API. TODO All the isEnabled methods could be pushed into a filter interface. Not sure of the utility of having isEnabled be able to examine the message pattern and parameters. (RG) Moving the isEnabled methods out of Logger noticeably impacts performance. The message pattern and parameters are required so that they can be used in global filters.- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
Logger.LoggerProxy
Serialization proxy class for Logger.protected class
Logger.PrivateConfig
The binding between a Logger and its configuration.
-
Field Summary
Fields Modifier and Type Field Description protected Logger.PrivateConfig
privateConfig
Config should be consistent across threads.-
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, logBuilder, name, THROWING_MARKER
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
Logger(LoggerContext context, String name, MessageFactory messageFactory)
The constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addAppender(Appender appender)
This method is not exposed through the public API and is used primarily for unit testing.void
addFilter(Filter filter)
This method is not exposed through the public API and is used primarily for unit testing.boolean
equals(Object o)
int
filterCount()
This method is not exposed through the public API and is used primarily for unit testing.LoggerConfig
get()
Gets a value.Map<String,Appender>
getAppenders()
This method is not exposed through the public API and is used primarily for unit testing.LoggerContext
getContext()
Returns the LoggerContext this Logger is associated with.Iterator<Filter>
getFilters()
This method is not exposed through the public API and is used primarily for unit testing.Level
getLevel()
Gets the Level associated with the Logger.Logger
getParent()
This method is only used for 1.x compatibility.int
hashCode()
boolean
isAdditive()
This method is not exposed through the public API and is present only to support the Log4j 1.2 compatibility bridge.boolean
isEnabled(Level level, Marker marker, CharSequence message, Throwable t)
Determines if logging is enabled.boolean
isEnabled(Level level, Marker marker, Object message, Throwable t)
Determines if logging is enabled.boolean
isEnabled(Level level, Marker marker, String message)
Determine if logging is enabled.boolean
isEnabled(Level level, Marker marker, String message, Object p0)
Determines if logging is enabled.boolean
isEnabled(Level level, Marker marker, String message, Object... params)
Determines if logging is enabled.boolean
isEnabled(Level level, Marker marker, String message, Object p0, Object p1)
Determines if logging is enabled.boolean
isEnabled(Level level, Marker marker, String message, Object p0, Object p1, Object p2)
Determines if logging is enabled.boolean
isEnabled(Level level, Marker marker, String message, Object p0, Object p1, Object p2, Object p3)
Determines if logging is enabled.boolean
isEnabled(Level level, Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4)
Determines if logging is enabled.boolean
isEnabled(Level level, Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5)
Determines if logging is enabled.boolean
isEnabled(Level level, Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6)
Determines if logging is enabled.boolean
isEnabled(Level level, Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7)
Determines if logging is enabled.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)
Determines if logging is enabled.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)
Determines if logging is enabled.boolean
isEnabled(Level level, Marker marker, String message, Throwable t)
Determines if logging is enabled.boolean
isEnabled(Level level, Marker marker, Message message, Throwable t)
Determines if logging is enabled.protected void
log(Level level, Marker marker, String fqcn, StackTraceElement location, Message message, Throwable throwable)
void
logMessage(String fqcn, Level level, Marker marker, Message message, Throwable t)
Always logs a message at the specified level.void
removeAppender(Appender appender)
This method is not exposed through the public API and is used primarily for unit testing.protected boolean
requiresLocation()
void
setAdditive(boolean additive)
This method is not exposed through the public API and is present only to support the Log4j 1.2 compatibility bridge.void
setLevel(Level level)
This method is not exposed through the public API and is provided primarily for unit testing.String
toString()
Returns a String representation of this instance in the form"name:level[ in context_name]"
.protected void
updateConfiguration(Configuration newConfig)
Associates this Logger with a new Configuration.protected Object
writeReplace()
-
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, 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, 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, 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, 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
-
privateConfig
protected volatile Logger.PrivateConfig privateConfig
Config should be consistent across threads.
-
-
Constructor Detail
-
Logger
protected Logger(LoggerContext context, String name, MessageFactory messageFactory)
The constructor.- Parameters:
context
- The LoggerContext this Logger is associated with.messageFactory
- The message factory.name
- The name of the Logger.
-
-
Method Detail
-
writeReplace
protected Object writeReplace() throws ObjectStreamException
- Throws:
ObjectStreamException
-
getParent
public Logger getParent()
This method is only used for 1.x compatibility. Returns the parent of this Logger. If it doesn't already exist return a temporary Logger.- Returns:
- The parent Logger.
-
getContext
public LoggerContext getContext()
Returns the LoggerContext this Logger is associated with.- Returns:
- the LoggerContext.
-
setLevel
public void setLevel(Level level)
This method is not exposed through the public API and is provided primarily for unit testing.If the new level is null, this logger inherits the level from its parent.
- Parameters:
level
- The Level to use on this Logger, may be null.
-
get
public LoggerConfig get()
Description copied from interface:Supplier
Gets a value.- Specified by:
get
in interfaceSupplier<LoggerConfig>
- Returns:
- a value
-
requiresLocation
protected boolean requiresLocation()
- Overrides:
requiresLocation
in classAbstractLogger
-
logMessage
public void logMessage(String fqcn, Level level, Marker marker, Message message, Throwable t)
Description copied from interface:ExtendedLogger
Always logs a message at the specified level. It is the responsibility of the caller to ensure the specified level is enabled.- Specified by:
logMessage
in interfaceExtendedLogger
- Parameters:
fqcn
- The fully qualified class name of the logger entry point, used to determine the caller class and method when location information needs to be logged.level
- The logging Level to check.marker
- A Marker or null.message
- The Message.t
- the exception to log, including its stack trace.
-
log
protected void log(Level level, Marker marker, String fqcn, StackTraceElement location, Message message, Throwable throwable)
- Overrides:
log
in classAbstractLogger
-
isEnabled
public boolean isEnabled(Level level, Marker marker, String message, Throwable t)
Description copied from interface:ExtendedLogger
Determines if logging is enabled.- Specified by:
isEnabled
in interfaceExtendedLogger
- 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
Determine if logging is enabled.- Specified by:
isEnabled
in interfaceExtendedLogger
- 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
Determines if logging is enabled.- Specified by:
isEnabled
in interfaceExtendedLogger
- 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
Determines if logging is enabled.- Specified by:
isEnabled
in interfaceExtendedLogger
- 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
Determines if logging is enabled.- Specified by:
isEnabled
in interfaceExtendedLogger
- 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, String message, Object p0, Object p1, Object p2)
Description copied from interface:ExtendedLogger
Determines if logging is enabled.- Specified by:
isEnabled
in interfaceExtendedLogger
- 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, String message, Object p0, Object p1, Object p2, Object p3)
Description copied from interface:ExtendedLogger
Determines if logging is enabled.- Specified by:
isEnabled
in interfaceExtendedLogger
- 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, String message, Object p0, Object p1, Object p2, Object p3, Object p4)
Description copied from interface:ExtendedLogger
Determines if logging is enabled.- Specified by:
isEnabled
in interfaceExtendedLogger
- 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, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5)
Description copied from interface:ExtendedLogger
Determines if logging is enabled.- Specified by:
isEnabled
in interfaceExtendedLogger
- 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, 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.- Specified by:
isEnabled
in interfaceExtendedLogger
- 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, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7)
Description copied from interface:ExtendedLogger
Determines if logging is enabled.- Specified by:
isEnabled
in interfaceExtendedLogger
- 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, 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
Determines if logging is enabled.- Specified by:
isEnabled
in interfaceExtendedLogger
- 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, 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
Determines if logging is enabled.- Specified by:
isEnabled
in interfaceExtendedLogger
- 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, CharSequence message, Throwable t)
Description copied from interface:ExtendedLogger
Determines if logging is enabled.- Specified by:
isEnabled
in interfaceExtendedLogger
- 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
Determines if logging is enabled.- Specified by:
isEnabled
in interfaceExtendedLogger
- 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
Determines if logging is enabled.- Specified by:
isEnabled
in interfaceExtendedLogger
- 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.
-
addAppender
public void addAppender(Appender appender)
This method is not exposed through the public API and is used primarily for unit testing.- Parameters:
appender
- The Appender to add to the Logger.
-
removeAppender
public void removeAppender(Appender appender)
This method is not exposed through the public API and is used primarily for unit testing.- Parameters:
appender
- The Appender to remove from the Logger.
-
getAppenders
public Map<String,Appender> getAppenders()
This method is not exposed through the public API and is used primarily for unit testing.- Returns:
- A Map containing the Appender's name as the key and the Appender as the value.
-
getFilters
public Iterator<Filter> getFilters()
This method is not exposed through the public API and is used primarily for unit testing.- Returns:
- An Iterator over all the Filters associated with the Logger.
-
getLevel
public Level getLevel()
Gets the Level associated with the Logger.
-
filterCount
public int filterCount()
This method is not exposed through the public API and is used primarily for unit testing.- Returns:
- The number of Filters associated with the Logger.
-
addFilter
public void addFilter(Filter filter)
This method is not exposed through the public API and is used primarily for unit testing.- Parameters:
filter
- The Filter to add.
-
isAdditive
public boolean isAdditive()
This method is not exposed through the public API and is present only to support the Log4j 1.2 compatibility bridge.- Returns:
- true if the associated LoggerConfig is additive, false otherwise.
-
setAdditive
public void setAdditive(boolean additive)
This method is not exposed through the public API and is present only to support the Log4j 1.2 compatibility bridge.- Parameters:
additive
- Boolean value to indicate whether the Logger is additive or not.
-
updateConfiguration
protected void updateConfiguration(Configuration newConfig)
Associates this Logger with a new Configuration. This method is not exposed through the public API.There are two ways this could be used to guarantee all threads are aware of changes to config.
- Synchronize this method. Accessors don't need to be synchronized as Java will treat all variables within a synchronized block as volatile.
- Declare the variable volatile. Option 2 is used here as the performance cost is very low and it does a better job at documenting how it is used.
- Parameters:
newConfig
- The new Configuration.
-
toString
public String toString()
Returns a String representation of this instance in the form"name:level[ in context_name]"
.
-
-