|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
ObjectLogger
LoggerAdapter
public abstract class LoggerAdapter
An adapter that redirect all Java 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 Java 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 Java 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 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 this LoggerAdapter simple.
Since LoggerAdapters 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 must be performed through
explicit calls to logrb or log(LogRecord) methods. This is sufficient for
Geotk needs, which performs all localizations through the later. 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
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.
Logging
| utility/geotk-utility (download) | View source code for this class |
| Field Summary |
|---|
| Fields inherited from class Logger |
|---|
global, GLOBAL_LOGGER_NAME |
| Constructor Summary | |
|---|---|
protected |
LoggerAdapter(String name)
Creates a new logger. |
| Method Summary | |
|---|---|
void |
addHandler(Handler handler)
Do nothing since this logger adapter does not supports handlers. |
abstract void |
config(String message)
Logs an CONFIG message. |
void |
entering(String sourceClass,
String sourceMethod)
Logs a method entry to the debug level. |
void |
entering(String sourceClass,
String sourceMethod,
Object param)
Logs a method entry to the debug level with one parameter. |
void |
entering(String sourceClass,
String sourceMethod,
Object[] params)
Logs a method entry to the debug level with many parameters. |
void |
exiting(String sourceClass,
String sourceMethod)
Logs a method return to the debug level. |
void |
exiting(String sourceClass,
String sourceMethod,
Object result)
Logs a method return to the debug level. |
abstract void |
fine(String message)
Logs a FINE message. |
abstract void |
finer(String message)
Logs a FINER message. |
abstract void |
finest(String message)
Logs a FINEST message. |
protected Level |
getDebugLevel()
Returns the level for entering(java.lang.String, java.lang.String), exiting(java.lang.String, java.lang.String) and throwing(java.lang.String, java.lang.String, java.lang.Throwable) methods. |
abstract Level |
getLevel()
Returns the level for this logger. |
abstract void |
info(String message)
Logs an INFO message. |
abstract boolean |
isLoggable(Level level)
Returns true if the specified level is loggable. |
void |
log(Level level,
String message)
Logs a record at the specified level. |
void |
log(Level level,
String message,
Object param)
Logs a record at the specified level. |
void |
log(Level level,
String message,
Object[] params)
Logs a record at the specified level. |
void |
log(Level level,
String message,
Throwable thrown)
Logs a record at the specified level. |
void |
log(LogRecord record)
Logs a record. |
void |
logp(Level level,
String sourceClass,
String sourceMethod,
String message)
Logs a record at the specified level. |
void |
logp(Level level,
String sourceClass,
String sourceMethod,
String message,
Object param)
Logs a record at the specified level. |
void |
logp(Level level,
String sourceClass,
String sourceMethod,
String message,
Object[] params)
Logs a record at the specified level. |
void |
logp(Level level,
String sourceClass,
String sourceMethod,
String message,
Throwable thrown)
Logs a record at the specified level. |
void |
logrb(Level level,
String sourceClass,
String sourceMethod,
String bundleName,
String message)
Logs a localizable record at the specified level. |
void |
logrb(Level level,
String sourceClass,
String sourceMethod,
String bundleName,
String message,
Object param)
Logs a localizable record at the specified level. |
void |
logrb(Level level,
String sourceClass,
String sourceMethod,
String bundleName,
String message,
Object[] params)
Logs a localizable record at the specified level. |
void |
logrb(Level level,
String sourceClass,
String sourceMethod,
String bundleName,
String message,
Throwable thrown)
Logs a localizable record at the specified level. |
void |
removeHandler(Handler handler)
Do nothing since this logger adapter does not support handlers. |
void |
setFilter(Filter filter)
Do nothing since this logger adapter does not support filters. |
abstract void |
setLevel(Level level)
Sets the level for this logger. |
void |
setParent(Logger parent)
Do nothing since this logger adapter does not support arbitrary parents. |
void |
setUseParentHandlers(boolean useParentHandlers)
Do nothing since this logger never use parent handlers. |
abstract void |
severe(String message)
Logs a SEVERE message. |
void |
throwing(String sourceClass,
String sourceMethod,
Throwable thrown)
Logs a method failure to the debug level. |
abstract void |
warning(String message)
Logs a WARNING message. |
| Methods inherited from class Logger |
|---|
getAnonymousLogger, getAnonymousLogger, getFilter, getHandlers, getLogger, getLogger, getName, getParent, getResourceBundle, getResourceBundleName, getUseParentHandlers |
| Methods inherited from class Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
protected LoggerAdapter(String name)
name - The logger name.| Method Detail |
|---|
public abstract void setLevel(Level level)
setLevel in class Loggerlevel - The new value for the log level (may be null).public abstract Level getLevel()
getLevel in class Logger@Debug protected Level getDebugLevel()
entering(java.lang.String, java.lang.String), exiting(java.lang.String, java.lang.String) and throwing(java.lang.String, java.lang.String, java.lang.Throwable) methods.
The default implementation returns Level.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.
public abstract boolean isLoggable(Level level)
true if the specified level is loggable.
Implementation tip
Given that Level.intValue() for all predefined levels are documented in the Level
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 using switch statements as below. This
statement has good chances to be compiled to the tableswitch bytecode rather than
lookupswitch (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;
}
}
isLoggable in class Loggerlevel - A message logging level.
true if the given message level is currently being logged.public abstract void severe(String message)
SEVERE message.
severe in class Loggermessage - The message to log.public abstract void warning(String message)
WARNING message.
warning in class Loggermessage - The message to log.public abstract void info(String message)
INFO message.
info in class Loggermessage - The message to log.public abstract void config(String message)
CONFIG message.
config in class Loggermessage - The message to log.public abstract void fine(String message)
FINE message.
fine in class Loggermessage - The message to log.public abstract void finer(String message)
FINER message.
finer in class Loggermessage - The message to log.public abstract void finest(String message)
FINEST message.
finest in class Loggermessage - The message to log.
public void entering(String sourceClass,
String sourceMethod)
Logger, this implementation bypass the level check in order to let
the backing logging framework do its own check.
entering in class LoggersourceClass - Name of class that issued the logging request.sourceMethod - Name of method that is being entered.
public void entering(String sourceClass,
String sourceMethod,
Object param)
Logger, this implementation bypass the level check in
order to let the backing logging framework do its own check.
entering in class LoggersourceClass - Name of class that issued the logging request.sourceMethod - Name of method that is being entered.param - Parameter to the method being entered.
public void entering(String sourceClass,
String sourceMethod,
Object[] params)
Logger, this implementation bypass the level check in
order to let the backing logging framework do its own check.
entering in class LoggersourceClass - Name of class that issued the logging request.sourceMethod - Name of method that is being entered.params - Array of parameters to the method being entered.
public void exiting(String sourceClass,
String sourceMethod)
Logger, this implementation bypass the level check in order to let
the backing logging framework do its own check.
exiting in class LoggersourceClass - Name of class that issued the logging request.sourceMethod - Name of the method.
public void exiting(String sourceClass,
String sourceMethod,
Object result)
Logger, this implementation bypass the level check in order to let
the backing logging framework do its own check.
exiting in class LoggersourceClass - Name of class that issued the logging request.sourceMethod - Name of the method.result - Object that is being returned.
public void throwing(String sourceClass,
String sourceMethod,
Throwable thrown)
Logger, this implementation bypass the level check in order to let
the backing logging framework do its own check.
throwing in class LoggersourceClass - Name of class that issued the logging request.sourceMethod - Name of the method.thrown - The Throwable that is being thrown.public void log(LogRecord record)
logrb.
log in class Loggerrecord - The log record to be published.
public void log(Level level,
String message)
severe, warning, info,
config, fine, finer or
finest methods according the supplied level.
log in class Loggerlevel - One of the message level identifiers.message - The message to log.
public void log(Level level,
String message,
Throwable thrown)
log(level, message).
log in class Loggerlevel - One of the message level identifiers.message - The message to log.thrown - Throwable associated with log message.
public void log(Level level,
String message,
Object param)
log(level, message, params)
where the params array is built from the param object.
log in class Loggerlevel - One of the message level identifiers.message - The message to log.param - Parameter to the method being entered.
public void log(Level level,
String message,
Object[] params)
log(level, message).
log in class Loggerlevel - One of the message level identifiers.message - The message to log.params - Array of parameters to the method being entered.
public void logp(Level level,
String sourceClass,
String sourceMethod,
String message)
log(level, message).
logp in class Loggerlevel - One of the message level identifiers.sourceClass - Name of class that issued the logging request.sourceMethod - Name of the method.message - The message to log.
public void logp(Level level,
String sourceClass,
String sourceMethod,
String message,
Throwable thrown)
log(level, message, thrown).
logp in class Loggerlevel - One of the message level identifiers.sourceClass - Name of class that issued the logging request.sourceMethod - Name of the method.message - The message to log.thrown - Throwable associated with log message.
public void logp(Level level,
String sourceClass,
String sourceMethod,
String message,
Object param)
logp(level, sourceClass,
sourceMethod, message, params) where the params array is built from the
param object.
Note that sourceClass and sourceMethod will be discarded unless the
target logp method has been overridden.
logp in class Loggerlevel - One of the message level identifiers.sourceClass - Name of class that issued the logging request.sourceMethod - Name of the method.message - The message to log.param - Parameter to the method being entered.
public void logp(Level level,
String sourceClass,
String sourceMethod,
String message,
Object[] params)
logp(level, sourceClass, sourceMethod, message).
Note that sourceClass and sourceMethod will be discarded unless the
target logp method has been overridden.
logp in class Loggerlevel - One of the message level identifiers.sourceClass - Name of class that issued the logging request.sourceMethod - Name of the method.message - The message to log.params - Array of parameters to the method being entered.
public void logrb(Level level,
String sourceClass,
String sourceMethod,
String bundleName,
String message)
logp(level, sourceClass, sourceMethod, message).
logrb in class Loggerlevel - 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, or null.message - The message to log.
public void logrb(Level level,
String sourceClass,
String sourceMethod,
String bundleName,
String message,
Throwable thrown)
logp(level, sourceClass, sourceMethod, message, thrown).
logrb in class Loggerlevel - 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, or null.message - The message to log.thrown - Throwable associated with log message.
public void logrb(Level level,
String sourceClass,
String sourceMethod,
String bundleName,
String message,
Object param)
logp(level, sourceClass, sourceMethod, message, param).
logrb in class Loggerlevel - 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, or null.message - The message to log.param - Parameter to the method being entered.
public void logrb(Level level,
String sourceClass,
String sourceMethod,
String bundleName,
String message,
Object[] params)
logp(level, sourceClass, sourceMethod, message, params).
logrb in class Loggerlevel - 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, or null.message - The message to log.params - Array of parameters to the method being entered.public void addHandler(Handler handler)
Handler objects.
addHandler in class Loggerhandler - A logging handler, ignored in default implementation.public void removeHandler(Handler handler)
removeHandler in class Loggerhandler - A logging handler, ignored in default implementation.public void setUseParentHandlers(boolean useParentHandlers)
addHandler(java.util.logging.Handler) not allowing to add any handlers, and avoid mixing
loggings from the external framework with Java loggings.
setUseParentHandlers in class LoggeruseParentHandlers - Ignored in default implementation.public void setParent(Logger parent)
setParent in class Loggerparent - Ignored in default implementation.public void setFilter(Filter filter)
LoggerAdapter architecture (e.g. we would need to
make sure that Filter.isLoggable(java.util.logging.LogRecord) is invoked only once even if a log call
is cascaded into many other log calls, and this test must works in multi-threads
environment).
setFilter in class Loggerfilter - Ignored in default implementation.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||