Class LoggerAdapter
- Direct Known Subclasses:
Log4J2Logger,Log4JLogger,LogbackLogger
severe, warning, info, config, fine, finer and finest methods as
abstract ones. Subclasses should implement those methods in order to map Java logging levels to the backend
logging framework.
All log methods are overriden in order to redirect to one of the above-cited methods.
Note that this is the opposite approach than the Java logging framework one, which implemented everything on top of
Logger.log(LogRecord). This adapter is defined in terms of severe …
finest methods instead because external frameworks like Commons-logging don't work with LogRecord, and sometime
provides nothing else than convenience methods equivalent to severe …
finest.
Restrictions
Because the configuration is expected to be fully controled by the external logging framework, every configuration
methods inherited from Logger are disabled:
addHandler(java.util.logging.Handler)since the handling is performed by the external framework.setUseParentHandlers(boolean)since this adapter never delegates to the parent handlers. This is consistent with the previous item and avoid mixing loggings from the external framework with Java loggings.setParent(java.util.logging.Logger)since this adapter should not inherits any configuration from a parent logger using the Java logging framework.setFilter(java.util.logging.Filter)for keeping thisLoggerAdaptersimple.
Since LoggerAdapters do not hold any configuration by themself, it is not strictly necessary to
add them to the log manager. The adapters can be created,
garbage-collected and recreated again while preserving their behavior since their configuration is entirely contained
in the external logging framework.
Localization
This logger is always created without resource bundles. Localizations must be performed through explicit calls to
logrb or log(LogRecord) methods. This is sufficient for GeoTools needs, which performs all
localizations through the latter. Note that these methods will be slower in this LoggerAdapter than the
default Logger because this adapter localizes and formats records immediately instead of letting the
Handler performs this work only if needed.
Logging levels
If a log record level is not one of the predefined ones, then this class maps to the first level
below the specified one. For example if a log record has some level between FINE and
FINER, then the finer method will be invoked. See isLoggable(java.util.logging.Level) for
implementation tips taking advantage of this rule.
Subclasses
The abstract methods required for subclassing handle redirect message logging to target framework.
Throwable: When adapting to a logging framework that supports logging of Throwables implement log(Level, String, Throwable) if you wish to support this functionality.
Throwable: When adapting to a logging framework that supports logging of Throwables * implement log(Level, String, Throwable) if you wish to support this functionality.
- Since:
- 2.4
- Author:
- Martin Desruisseaux
- See Also:
-
Field Summary
Fields inherited from class Logger
global, GLOBAL_LOGGER_NAME -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddHandler(Handler handler) Do nothing since this logger adapter does not supports handlers.abstract voidLogs anCONFIGmessage.voidLogs a method entry to the debug level.voidLogs a method entry to the debug level with one parameter.voidLogs a method entry to the debug level with many parameters.voidLogs a method return to the debug level.voidLogs a method return to the debug level.abstract voidLogs aFINEmessage.abstract voidLogs aFINERmessage.abstract voidLogs aFINESTmessage.protected LevelReturns the level forentering(java.lang.String, java.lang.String),exiting(java.lang.String, java.lang.String)andthrowing(java.lang.String, java.lang.String, java.lang.Throwable)methods.abstract LevelgetLevel()Returns the level for this logger.abstract voidLogs anINFOmessage.abstract booleanisLoggable(Level level) Returnstrueif the specified level is loggable.voidLogs a record at the specified level.voidLogs a record at the specified level.voidLogs a record at the specified level.voidLogs a record at the specified level.voidLogs a record.voidLogs a record at the specified level.voidLogs a record at the specified level.voidLogs a record at the specified level.voidLogs a record at the specified level.voidLogs a localizable record at the specified level.voidlogrb(Level level, String sourceClass, String sourceMethod, String bundleName, String message, Object param) Logs a localizable record at the specified level.voidlogrb(Level level, String sourceClass, String sourceMethod, String bundleName, String message, Object[] params) Logs a localizable record at the specified level.voidlogrb(Level level, String sourceClass, String sourceMethod, String bundleName, String message, Throwable thrown) Logs a localizable record at the specified level.voidremoveHandler(Handler handler) Do nothing since this logger adapter does not support handlers.voidDo nothing since this logger adapter does not support filters.abstract voidSets the level for this logger.voidDo nothing since this logger adapter does not support arbitrary parents.voidsetUseParentHandlers(boolean useParentHandlers) Do nothing since this logger never use parent handlers.abstract voidLogs aSEVEREmessage.voidLogs a method failure to the debug level.toString()abstract voidLogs aWARNINGmessage.Methods inherited from class Logger
config, fine, finer, finest, getAnonymousLogger, getAnonymousLogger, getFilter, getGlobal, getHandlers, getLogger, getLogger, getName, getParent, getResourceBundle, getResourceBundleName, getUseParentHandlers, info, log, log, logp, logp, logrb, logrb, logrb, logrb, setResourceBundle, severe, warning
-
Constructor Details
-
LoggerAdapter
Creates a new logger.- Parameters:
name- The logger name.
-
-
Method Details
-
setLevel
Sets the level for this logger. Subclasses must redirect the call to the external logging framework, or do nothing if the level can not be changed programmatically. -
getLevel
Returns the level for this logger. Subclasses shall get this level from the external logging framework. -
getDebugLevel
Returns the level forentering(java.lang.String, java.lang.String),exiting(java.lang.String, java.lang.String)andthrowing(java.lang.String, java.lang.String, java.lang.Throwable)methods. The default implementation returnsLevel.FINER, which is consistent with the value used in the Java logging framework. Subclasses should override this method if a different debug level is wanted. -
isLoggable
Returnstrueif the specified level is loggable.Implementation tip
Given thatLevel.intValue()for all predefined levels are documented in theLevelspecification and are multiple of 100, given that integer divisions are rounded toward zero and given rule documented in this class javadoc, then logging levels can be efficiently mapped to predefined levels usingswitchstatements as below. This statement has good chances to be compiled to thetableswitchbytecode rather thanlookupswitch(see Compiling Switches in The Java Virtual Machine Specification).- Overrides:
isLoggablein classLogger
-
severe
Logs aSEVEREmessage. -
warning
Logs aWARNINGmessage. -
info
Logs anINFOmessage. -
config
Logs anCONFIGmessage. -
fine
Logs aFINEmessage. -
finer
Logs aFINERmessage. -
finest
Logs aFINESTmessage. -
entering
Logs a method entry to the debug level. Compared to the defaultLogger, this implementation bypass the level check in order to let the backing logging framework do its own check. -
entering
Logs a method entry to the debug level with one parameter. Compared to the defaultLogger, this implementation bypass the level check in order to let the backing logging framework do its own check. -
entering
Logs a method entry to the debug level with many parameters. Compared to the defaultLogger, this implementation bypass the level check in order to let the backing logging framework do its own check. -
exiting
Logs a method return to the debug level. Compared to the defaultLogger, this implementation bypass the level check in order to let the backing logging framework do its own check. -
exiting
Logs a method return to the debug level. Compared to the defaultLogger, this implementation bypass the level check in order to let the backing logging framework do its own check. -
throwing
Logs a method failure to the debug level. Compared to the defaultLogger, this implementation bypass the level check in order to let the backing logging framework do its own check. -
log
Logs a record. The default implementation delegates tologrb. -
log
-
log
Logs a record at the specified level. The default implementation discards the exception and delegates tolog(level, message). -
log
Logs a record at the specified level. The defaut implementation delegates tolog(level, message, param)where theparamarray is built from theparamobject. -
log
Logs a record at the specified level. The defaut implementation formats the message immediately, then delegates tolog(level, message). -
logp
Logs a record at the specified level. The defaut implementation discards the source class and source method, then delegates tolog(level, message). -
logp
public void logp(Level level, String sourceClass, String sourceMethod, String message, Throwable thrown) Logs a record at the specified level. The defaut implementation discards the source class and source method, then delegates tolog(level, message, thrown). -
logp
public void logp(Level level, String sourceClass, String sourceMethod, String message, Object param) -
logp
public void logp(Level level, String sourceClass, String sourceMethod, String message, Object[] params) -
logrb
public void logrb(Level level, String sourceClass, String sourceMethod, String bundleName, String message) Logs a localizable record at the specified level. The defaut implementation localizes the message immediately, then delegates tologp(level, sourceClass, sourceMethod, message). -
logrb
public void logrb(Level level, String sourceClass, String sourceMethod, String bundleName, String message, Throwable thrown) Logs a localizable record at the specified level. The defaut implementation localizes the message immediately, then delegates tologp(level, sourceClass, sourceMethod, message, thrown). -
logrb
public void logrb(Level level, String sourceClass, String sourceMethod, String bundleName, String message, Object param) Logs a localizable record at the specified level. The defaut implementation localizes the message immediately, then delegates tologp(level, sourceClass, sourceMethod, message, param). -
logrb
public void logrb(Level level, String sourceClass, String sourceMethod, String bundleName, String message, Object[] params) Logs a localizable record at the specified level. The defaut implementation localizes the message immediately, then delegates tologp(level, sourceClass, sourceMethod, message, params). -
addHandler
Do nothing since this logger adapter does not supports handlers. The configuration should be fully controlled by the external logging framework (e.g. Commons-logging) instead, which is not expected to useHandlerobjects.- Overrides:
addHandlerin classLogger
-
removeHandler
Do nothing since this logger adapter does not support handlers.- Overrides:
removeHandlerin classLogger
-
setUseParentHandlers
public void setUseParentHandlers(boolean useParentHandlers) Do nothing since this logger never use parent handlers. This is consistent withaddHandler(java.util.logging.Handler)not allowing to add any handlers, and avoid mixing loggings from the external framework with Java loggings.- Overrides:
setUseParentHandlersin classLogger
-
setParent
Do nothing since this logger adapter does not support arbitrary parents. More specifically, it should not inherits any configuration from a parent logger using the Java logging framework. -
setFilter
Do nothing since this logger adapter does not support filters. It is difficult to query efficiently the filter in thisLoggerAdapterarchitecture (e.g. we would need to make sure thatFilter.isLoggable(java.util.logging.LogRecord)is invoked only once even if alogcall is cascaded into many otherlogcalls, and this test must works in multi-threads environment). -
toString
-