Package org.apache.sis.util.logging
Class LoggerAdapter
Deprecated.
Will be removed since there is now other mechanisms for redirecting logging.
See SIS-531.
An adapter that redirect all JDK logging events to an other logging framework. This
class redefines the
severe
, warning
,
info
, config
, fine
,
finer
and finest
methods as abstract
ones. Subclasses should implement those methods in order to map JDK logging levels to
the backend logging framework.
All log
methods are overridden in order to redirect to one of the
above-cited methods. Note that this is the opposite approach than the JDK logging framework
one, which implements 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 controlled by the external logging framework, every configuration methods inherited fromLogger
are disabled:
addHandler(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 JDK loggings.setParent(Logger)
since this adapter should not inherits any configuration from a parent logger using the JDK logging framework.setFilter(Filter)
for keeping thisLoggerAdapter
simple.
LoggerAdapter
s do not hold any configuration by themselves, 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 shall be done through explicit calls tologrb
or log(LogRecord)
methods. This is sufficient for
SIS needs, which performs all localizations through the latter. Note that those 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 betweenFINE
and FINER
, then the finer
method will be invoked. See isLoggable(Level)
for implementation tips taking advantage
of this rule.- Since:
- 0.3
- See Also:
Defined in the sis-utility
module
-
Field Summary
Fields inherited from class Logger
global, GLOBAL_LOGGER_NAME
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
LoggerAdapter
(String name) Deprecated.Creates a new logger. -
Method Summary
Modifier and TypeMethodDescriptionvoid
addHandler
(Handler handler) Deprecated.Do nothing since this logger adapter does not supports handlers.abstract void
Deprecated.Logs anCONFIG
message.void
Deprecated.Logs a method entry to the debug level.void
Deprecated.Logs a method entry to the debug level with one parameter.void
Deprecated.Logs a method entry to the debug level with many parameters.void
Deprecated.Logs a method return to the debug level.void
Deprecated.Logs a method return to the debug level.abstract void
Deprecated.Logs aFINE
message.abstract void
Deprecated.Logs aFINER
message.abstract void
Deprecated.Logs aFINEST
message.protected Level
Deprecated.abstract Level
Deprecated.Returns the level for this logger.abstract void
Deprecated.Logs anINFO
message.abstract boolean
isLoggable
(Level level) Deprecated.Returnstrue
if the specified level is loggable.void
Deprecated.Logs a record at the specified level.void
Deprecated.Logs a record at the specified level.void
Deprecated.Logs a record at the specified level.void
Deprecated.Logs a record at the specified level.void
log
(LogRecord record) Deprecated.Logs a record.void
Deprecated.Logs a record at the specified level.void
Deprecated.Logs a record at the specified level.void
Deprecated.Logs a record at the specified level.void
Deprecated.Logs a record at the specified level.void
Deprecated.JDK 8 has deprecated this method.void
logrb
(Level level, String sourceClass, String sourceMethod, String bundleName, String message, Object param) Deprecated.JDK 8 has deprecated this method.void
logrb
(Level level, String sourceClass, String sourceMethod, String bundleName, String message, Object[] params) Deprecated.JDK 8 has deprecated this method.void
logrb
(Level level, String sourceClass, String sourceMethod, String bundleName, String message, Throwable thrown) Deprecated.JDK 8 has deprecated this method.void
logrb
(Level level, String sourceClass, String sourceMethod, ResourceBundle bundle, String message, Object... params) Deprecated.Logs a localizable record at the specified level.void
logrb
(Level level, String sourceClass, String sourceMethod, ResourceBundle bundle, String message, Throwable thrown) Deprecated.Logs a localizable record at the specified level.void
removeHandler
(Handler handler) Deprecated.Do nothing since this logger adapter does not support handlers.void
setFilter
(Filter filter) Deprecated.Do nothing since this logger adapter does not support filters.abstract void
Deprecated.Sets the level for this logger.void
setParent
(Logger parent) Deprecated.Do nothing since this logger adapter does not support arbitrary parents.void
setUseParentHandlers
(boolean useParentHandlers) Deprecated.Do nothing since this logger never use parent handlers.abstract void
Deprecated.Logs aSEVERE
message.void
Deprecated.Logs a method failure to the debug level.abstract void
Deprecated.Logs aWARNING
message.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, setResourceBundle, severe, warning
-
Constructor Details
-
LoggerAdapter
Deprecated.Creates a new logger.- Parameters:
name
- the logger name.
-
-
Method Details
-
setLevel
Deprecated.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
Deprecated.Returns the level for this logger. Subclasses shall get this level from the external logging framework. -
getDebugLevel
Deprecated.Returns the level forentering(…)
,exiting(…)
andthrowing(…)
methods. The default implementation returnsLevel.FINER
, which is consistent with the value used in the JDK logging framework. Subclasses should override this method if a different debug level is wanted.- Returns:
- the level to use for debugging information.
-
isLoggable
Deprecated.Returnstrue
if the specified level is loggable.Implementation tip
Given thatLevel.intValue()
for all predefined levels are documented in theLevel
specification 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 usingswitch
statements as below. This statement has good chances to be compiled to thetableswitch
bytecode rather thanlookupswitch
(see Compiling Switches in The Java Virtual Machine Specification).public boolean isLoggable(Level level) { final int n = level.intValue(); switch (n / 100) { default: { // MAX_VALUE is a special value for Level.OFF. Otherwise and // if positive, fallthrough since we are greater than SEVERE. switch (n) { case Integer.MIN_VALUE: return true; // Level.ALL case Integer.MAX_VALUE: return false; // Level.OFF default: if (n < 0) return false; } } case 10: return isSevereEnabled(); case 9: return isWarningEnabled(); case 8: return isInfoEnabled(); case 7: return isConfigEnabled(); case 6: // fallthrough case 5: return isFineEnabled(); case 4: return isFinerEnabled(); case 3: return isFinestEnabled(); case 2: // fallthrough case 1: // fallthrough case 0: return false; } }
- Overrides:
isLoggable
in classLogger
- Parameters:
level
- a message logging level.- Returns:
true
if the given message level is currently being logged.
-
severe
Deprecated.Logs aSEVERE
message. -
warning
Deprecated.Logs aWARNING
message. -
info
Deprecated.Logs anINFO
message. -
config
Deprecated.Logs anCONFIG
message. -
fine
Deprecated.Logs aFINE
message. -
finer
Deprecated.Logs aFINER
message. -
finest
Deprecated.Logs aFINEST
message. -
entering
Deprecated.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
Deprecated.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
Deprecated.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
Deprecated.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
Deprecated.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
Deprecated.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
Deprecated.Logs a record. The default implementation delegates to one of thelogrb
orlogp(Level,String,String,String)
methods. -
log
Deprecated. -
log
Deprecated.Logs a record at the specified level. The default implementation discards the exception and delegates tolog(level, message)
. -
log
Deprecated.Logs a record at the specified level. The default implementation delegates tolog(level, message, params)
where theparams
array is built from theparam
object. -
log
Deprecated.Logs a record at the specified level. The default implementation formats the message immediately, then delegates tolog(level, message)
. -
logp
Deprecated.Logs a record at the specified level. The default 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) Deprecated.Logs a record at the specified level. The default 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) Deprecated.Logs a record at the specified level. The default implementation delegates tologp(level, sourceClass, sourceMethod, message, params)
where theparams
array is built from theparam
object.Note that
sourceClass
andsourceMethod
will be discarded unless the targetlogp
method has been overridden. -
logp
public void logp(Level level, String sourceClass, String sourceMethod, String message, Object[] params) Deprecated. -
logrb
public void logrb(Level level, String sourceClass, String sourceMethod, ResourceBundle bundle, String message, Object... params) Deprecated.Logs a localizable record at the specified level. The default implementation localizes the message immediately, then delegates tologp(level, sourceClass, sourceMethod, message, params)
.- Overrides:
logrb
in classLogger
- Parameters:
level
- one of the message level identifiers.sourceClass
- name of class that issued the logging request.sourceMethod
- name of the method.bundle
- the resource bundle for localizing the message, ornull
.message
- the message to log.params
- array of parameters to the method being entered.- Since:
- 0.5
-
logrb
public void logrb(Level level, String sourceClass, String sourceMethod, ResourceBundle bundle, String message, Throwable thrown) Deprecated.Logs a localizable record at the specified level. The default implementation localizes the message immediately, then delegates tologp(level, sourceClass, sourceMethod, message, thrown)
.- Overrides:
logrb
in classLogger
- Parameters:
level
- one of the message level identifiers.sourceClass
- name of class that issued the logging request.sourceMethod
- name of the method.bundle
- the resource bundle for localizing the message, ornull
.message
- the message to log.thrown
- throwable associated with log message.- Since:
- 0.5
-
logrb
@Deprecated public void logrb(Level level, String sourceClass, String sourceMethod, String bundleName, String message) Deprecated.JDK 8 has deprecated this method.Logs a localizable record at the specified level. The default implementation localizes the message immediately, then delegates tologp(level, sourceClass, sourceMethod, message)
. -
logrb
@Deprecated public void logrb(Level level, String sourceClass, String sourceMethod, String bundleName, String message, Throwable thrown) Deprecated.JDK 8 has deprecated this method.Logs a localizable record at the specified level. The default implementation localizes the message immediately, then delegates tologp(level, sourceClass, sourceMethod, message, thrown)
.- Overrides:
logrb
in classLogger
- Parameters:
level
- one of the message level identifiers.sourceClass
- name of class that issued the logging request.sourceMethod
- name of the method.bundleName
- name of resource bundle to localize message, ornull
.message
- the message to log.thrown
- throwable associated with log message.
-
logrb
@Deprecated public void logrb(Level level, String sourceClass, String sourceMethod, String bundleName, String message, Object param) Deprecated.JDK 8 has deprecated this method.Logs a localizable record at the specified level. The default implementation localizes the message immediately, then delegates tologp(level, sourceClass, sourceMethod, message, param)
.- Overrides:
logrb
in classLogger
- Parameters:
level
- one of the message level identifiers.sourceClass
- name of class that issued the logging request.sourceMethod
- name of the method.bundleName
- name of resource bundle to localize message, ornull
.message
- the message to log.param
- parameter to the method being entered.
-
logrb
@Deprecated public void logrb(Level level, String sourceClass, String sourceMethod, String bundleName, String message, Object[] params) Deprecated.JDK 8 has deprecated this method.Logs a localizable record at the specified level. The default implementation localizes the message immediately, then delegates tologp(level, sourceClass, sourceMethod, message, params)
.- Overrides:
logrb
in classLogger
- Parameters:
level
- one of the message level identifiers.sourceClass
- name of class that issued the logging request.sourceMethod
- name of the method.bundleName
- name of resource bundle to localize message, ornull
.message
- the message to log.params
- array of parameters to the method being entered.
-
addHandler
Deprecated.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 useHandler
objects.- Overrides:
addHandler
in classLogger
- Parameters:
handler
- a logging handler, ignored in default implementation.
-
removeHandler
Deprecated.Do nothing since this logger adapter does not support handlers.- Overrides:
removeHandler
in classLogger
- Parameters:
handler
- a logging handler, ignored in default implementation.
-
setUseParentHandlers
public void setUseParentHandlers(boolean useParentHandlers) Deprecated.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 JDK loggings.- Overrides:
setUseParentHandlers
in classLogger
- Parameters:
useParentHandlers
- ignored in default implementation.
-
setParent
Deprecated.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 JDK logging framework.- Overrides:
setParent
in classLogger
- Parameters:
parent
- ignored in default implementation.
-
setFilter
Deprecated.Do nothing since this logger adapter does not support filters. It is difficult to query efficiently the filter in thisLoggerAdapter
architecture (e.g. we would need to make sure thatFilter.isLoggable(java.util.logging.LogRecord)
is invoked only once even if alog
call is cascaded into many otherlog
calls, and this test must works in multi-threads environment).- Overrides:
setFilter
in classLogger
- Parameters:
filter
- ignored in default implementation.
-