SLF4JBridgeHandler (SLF4J 1.7.4 API)
Date: 2013-03-18

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.slf4j.bridge
Class SLF4JBridgeHandler

    java.lang.Object
      java.util.logging.Handler
          org.slf4j.bridge.SLF4JBridgeHandler

    public class SLF4JBridgeHandler

extends Handler

Bridge/route all JUL log records to the SLF4J API.

Essentially, the idea is to install on the root logger an instance of `SLF4JBridgeHandler` as the sole JUL handler in the system. Subsequently, the SLF4JBridgeHandler instance will redirect all JUL log records are redirected to the SLF4J API based on the following mapping of levels:

     FINEST  -> TRACE
     FINER   -> DEBUG
     FINE    -> DEBUG
     INFO    -> INFO
     WARNING -> WARN
     SEVERE  -> ERROR

Programmatic installation:

     // Optionally remove existing handlers attached to j.u.l root logger
     SLF4JBridgeHandler.removeHandlersForRootLogger();  // (since SLF4J 1.6.5)

     // add SLF4JBridgeHandler to j.u.l's root logger, should be done once during
     // the initialization phase of your application
     SLF4JBridgeHandler.install();

Installation via logging.properties configuration file:

     // register SLF4JBridgeHandler as handler for the j.u.l. root logger
     handlers = org.slf4j.bridge.SLF4JBridgeHandler

Once SLF4JBridgeHandler is installed, logging by j.u.l. loggers will be directed to SLF4J. Example:

     import  java.util.logging.Logger;
     ...
     // usual pattern: get a Logger and then log a message
     Logger julLogger = Logger.getLogger("org.wombat");
     julLogger.fine("hello world"); // this will get redirected to SLF4J

Please note that translating a java.util.logging event into SLF4J incurs the cost of constructing `LogRecord` instance regardless of whether the SLF4J logger is disabled for the given level. Consequently, j.u.l. to SLF4J translation can seriously increase the cost of disabled logging statements (60 fold or 6000% increase) and measurably impact the performance of enabled log statements (20% overall increase). Please note that as of logback-version 0.9.25, it is possible to completely eliminate the 60 fold translation overhead for disabled log statements with the help of LevelChangePropagator.

If you are concerned about application performance, then use of `SLF4JBridgeHandler` is appropriate only if any one the following two conditions is true:

1. few j.u.l. logging statements are in play
2. LevelChangePropagator has been installed

Since:
  1.5.1
Author:
  Christian Stein, Joern Huxhorn, Ceki Gülcü, Darryl Smith

Constructor Summary
`SLF4JBridgeHandler()` Initialize this handler.

Method Summary
`protected void` | `callLocationAwareLogger(LocationAwareLogger lal, LogRecord record)`
`protected void` | `callPlainSLF4JLogger(Logger slf4jLogger, LogRecord record)`
`void` | `close()` No-op implementation.
`void` | `flush()` No-op implementation.
`protected Logger` | `getSLF4JLogger(LogRecord record)` Return the Logger instance that will be used for logging.
`static void` | `install()` Adds a SLF4JBridgeHandler instance to jul's root logger.
`static boolean` | `isInstalled()` Returns true if SLF4JBridgeHandler has been previously installed, returns false otherwise.
`void` | `publish(LogRecord record)` Publish a LogRecord.
`static void` | `removeHandlersForRootLogger()` Invoking this method removes/unregisters/detaches all handlers currently attached to the root logger
`static void` | `uninstall()` Removes previously installed SLF4JBridgeHandler instances.

Methods inherited from class java.util.logging.Handler
`getEncoding, getErrorManager, getFilter, getFormatter, getLevel, isLoggable, reportError, setEncoding, setErrorManager, setFilter, setFormatter, setLevel`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### SLF4JBridgeHandler

    public SLF4JBridgeHandler()

  Initialize this handler.

Method Detail

### install

    public static void install()

  Adds a SLF4JBridgeHandler instance to jul's root logger.

  This handler will redirect j.u.l. logging to SLF4J. However, only logs enabled in j.u.l. will be redirected. For example, if a log statement invoking a j.u.l. logger is disabled, then the corresponding non-event will not reach SLF4JBridgeHandler and cannot be redirected.

### uninstall

    public static void uninstall()
                          throws SecurityException

  Removes previously installed SLF4JBridgeHandler instances. See also `install()`.

  Throws:
    `SecurityException` - A `SecurityException` is thrown, if a security manager exists and if the caller does not have LoggingPermission("control").

### isInstalled

    public static boolean isInstalled()
                               throws SecurityException

  Returns true if SLF4JBridgeHandler has been previously installed, returns false otherwise.

  Returns:
    true if SLF4JBridgeHandler is already installed, false other wise
  Throws:
    `SecurityException`

### removeHandlersForRootLogger

    public static void removeHandlersForRootLogger()

  Invoking this method removes/unregisters/detaches all handlers currently attached to the root logger

  Since:
    1.6.5

### close

    public void close()

  No-op implementation.

  Specified by:
    `close` in class `Handler`

### flush

    public void flush()

  No-op implementation.

  Specified by:
    `flush` in class `Handler`

### getSLF4JLogger

    protected Logger getSLF4JLogger(LogRecord record)

  Return the Logger instance that will be used for logging.

### callLocationAwareLogger

    protected void callLocationAwareLogger(LocationAwareLogger lal,
                                           LogRecord record)

### callPlainSLF4JLogger

    protected void callPlainSLF4JLogger(Logger slf4jLogger,
                                        LogRecord record)

### publish

    public void publish(LogRecord record)

  Publish a LogRecord.

  The logging request was made initially to a Logger object, which initialized the LogRecord and forwarded it here.

  This handler ignores the Level attached to the LogRecord, as SLF4J cares about discarding log statements.

  Specified by:
    `publish` in class `Handler`
  Parameters:
    `record` - Description of the log event. A null record is silently ignored and is not published.

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2005-2013 QOS.ch. All Rights Reserved.