org.geotoolkit.util.logging
Class MonolineFormatter

Object
  extended by Formatter
      extended by MonolineFormatter

@ThreadSafe
public class MonolineFormatter
extends Formatter

A formatter writing log messages on a single line. Compared to SimpleFormatter, this formatter uses only one line per message instead of two. For example a message formatted by MonolineFormatter looks like:

FINE   A log message logged with level FINE from the "org.geotoolkit.util" logger.
By default, MonolineFormatter displays only the level and the message. Additional fields can be formatted if setTimeFormat(java.lang.String) or setSourceFormat(java.lang.String) methods are invoked with a non-null argument. The format can also be set from the jre/lib/logging.properties file. For example, user can cut and paste the following properties into logging.properties:
###########################################################################
# Properties for the Geotoolkit.org's MonolineFormatter.
# By default, the monoline formatter display only the level
# and the message. Additional fields can be specified here:
#
#  time:   If set, writes the time elapsed since the initialization.
#          The argument specifies the output pattern. For example, the
#          pattern "HH:mm:ss.SSSS" displays the hours, minutes, seconds
#          and milliseconds.
#
#  source: If set, writes the source logger name or the source class name.
#          Valid argument values are "none", "logger:short", "logger:long",
#          "class:short" and "class:long".
###########################################################################
org.geotoolkit.util.logging.MonolineFormatter.time = HH:mm:ss.SSS
org.geotoolkit.util.logging.MonolineFormatter.source = class:short
The example below sets the MonolineFormatter for the whole system with level FINE and "Cp850" page encoding (which is appropriate for some DOS console on Windows).
java.util.logging.ConsoleHandler.formatter = org.geotoolkit.util.logging.MonolineFormatter
java.util.logging.ConsoleHandler.encoding = Cp850
java.util.logging.ConsoleHandler.level = FINE

Since:
2.0
Version:
3.18
Author:
Martin Desruisseaux (IRD)
Module:
utility/geotk-utility (download)    View source code for this class

Constructor Summary
MonolineFormatter(Handler handler)
          Constructs a default MonolineFormatter.
 
Method Summary
 void clearLevelColors()
          Clears all colors setting.
static MonolineFormatter configureConsoleHandler(Logger logger, Level level)
          Setups a MonolineFormatter for the specified logger and its children.
 String format(LogRecord record)
          Formats the given log record and return the formatted string.
 X364 getLevelColor(Level level)
          Returns the color used for the given level.
 String getSourceFormat()
          Returns the format for displaying the source.
 String getTimeFormat()
          Returns the format for displaying elapsed time.
 void setLevelColor(Level level, X364 color)
          Sets the color to use for the given level.
 void setSourceFormat(String format)
          Sets the format for displaying the source.
 void setTimeFormat(String pattern)
          Sets the format for displaying elapsed time.
 
Methods inherited from class Formatter
formatMessage, getHead, getTail
 
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MonolineFormatter

public MonolineFormatter(Handler handler)
Constructs a default MonolineFormatter. Formatters are often associated to a particular handler. If this handler is known, giving it at construction time can help this formatter to configure itself. This handler is only a hint - no reference to this handler will be kept; it could even be the wrong handler without breaking this formatter. The output may just be a little bit less "nice".

Parameters:
handler - The handler to be used with this formatter, or null if unknown.
Method Detail

getTimeFormat

public String getTimeFormat()
Returns the format for displaying elapsed time. This is the pattern specified to the last call to setTimeFormat(java.lang.String), or the patten specified in the org.geotoolkit.util.logging.MonolineFormatter.time property in the jre/lib/logging.properties file.

Returns:
The time pattern, or null if time is not formatted.

setTimeFormat

public void setTimeFormat(String pattern)
Sets the format for displaying elapsed time. The pattern must matches the format specified in SimpleDateFormat, but for the time part only (not the date). For example, the pattern "HH:mm:ss.SSS" will display the elapsed time in hours, minutes, seconds and milliseconds.

Parameters:
pattern - The time patter, or null to disable time formatting.

getSourceFormat

public String getSourceFormat()
Returns the format for displaying the source. This is the pattern specified to the last call to setSourceFormat(java.lang.String), or the patten specified in the org.geotoolkit.util.logging.MonolineFormatter.source property in the jre/lib/logging.properties file.

Returns:
The source pattern, or null if source is not formatted.

setSourceFormat

public void setSourceFormat(String format)
Sets the format for displaying the source. The pattern can be null, "none", "logger:short", "class:short", "logger:long" or "class:long". The 4 last choices are made of two parts separated by a ':' character:
  1. "logger" for the logger name, or "class" for the source class name. The source class name usually contains the logger name since (by convention) logger names are package names, but this is not mandatory neither enforced.

  2. "long" for the full logger or class name, or "short" for only the part following the last dot character.

The difference between a null and "none" is that null may be replaced by a default value, while "none" means that the caller explicitly requested no source.

Parameters:
format - The format for displaying the source.

getLevelColor

public X364 getLevelColor(Level level)
Returns the color used for the given level. By default there is no color for any level. Colors should be used only if this formatter is associated to a Handler writing to an ANSI X3.64 compatible terminal.

Parameters:
level - The level for which to get the color.
Returns:
The color for the given level, or null if none.
Since:
3.00

setLevelColor

public void setLevelColor(Level level,
                          X364 color)
Sets the color to use for the given level. This method should be invoked only if this formatter is associated to a Handler writing to an ANSI X3.64 compatible terminal.

Parameters:
level - The level for which to set a new color.
color - The new color, or null if none.
Since:
3.00

clearLevelColors

public void clearLevelColors()
Clears all colors setting. If this formatter was inserting X3.64 escape sequences for colored output, invoking this method will force the formatting of plain text.

Since:
3.00

format

public String format(LogRecord record)
Formats the given log record and return the formatted string.

Specified by:
format in class Formatter
Parameters:
record - The log record to be formatted.
Returns:
A formatted log record.

configureConsoleHandler

public static MonolineFormatter configureConsoleHandler(Logger logger,
                                                        Level level)
Setups a MonolineFormatter for the specified logger and its children. This method searches for all instances of ConsoleHandler using the SimpleFormatter. If such instances are found, they are replaced by a single instance of MonolineFormatter. If no such ConsoleHandler are found, then a new one is created with a new MonolineFormatter.

In addition, this method can set the handler levels. If the level is non-null, then every Handlers using the monoline formatter may be set to the specified level. Whatever the given level is used or not depends on current configuration. The choice is based on heuristic rules that may change in any future version. Developers are encouraged to avoid non-null level except for debugging purpose, since a user trying to configure his logging properties file may find confusing to see his setting ignored.

Parameters:
logger - The base logger to apply the change on.
level - The desired level, or null if no level should be set.
Returns:
The registered MonolineFormatter, or null if the registration failed. If non-null, the formatter output can be configured using the setTimeFormat(java.lang.String) and setSourceFormat(java.lang.String) methods.


Copyright © 2009-2012 Geotoolkit.org. All Rights Reserved.