SimpleLog
Date: 2015-09-14

org.apache.commons.logging.impl

## Class SimpleLog

- java.lang.Object
- - org.apache.commons.logging.impl.SimpleLog

- All Implemented Interfaces:
    java.io.Serializable, Log

      public class SimpleLog
      extends java.lang.Object
      implements Log, java.io.Serializable

  Simple implementation of Log that sends all enabled log messages, for all defined loggers, to System.err. The following system properties are supported to configure the behavior of this logger:
  - `org.apache.commons.logging.simplelog.defaultlog` - Default logging detail level for all instances of SimpleLog. Must be one of ("trace", "debug", "info", "warn", "error", or "fatal"). If not specified, defaults to "info".
  - `org.apache.commons.logging.simplelog.log.xxxxx` - Logging detail level for a SimpleLog instance named "xxxxx". Must be one of ("trace", "debug", "info", "warn", "error", or "fatal"). If not specified, the default logging detail level is used.
  - `org.apache.commons.logging.simplelog.showlogname` - Set to `true` if you want the Log instance name to be included in output messages. Defaults to `false`.
  - `org.apache.commons.logging.simplelog.showShortLogname` - Set to `true` if you want the last component of the name to be included in output messages. Defaults to `true`.
  - `org.apache.commons.logging.simplelog.showdatetime` - Set to `true` if you want the current date and time to be included in output messages. Default is `false`.
  - `org.apache.commons.logging.simplelog.dateTimeFormat` - The date and time format to be used in the output messages. The pattern describing the date and time format is the same that is used in `java.text.SimpleDateFormat`. If the format is not specified or is invalid, the default format is used. The default format is `yyyy/MM/dd HH:mm:ss:SSS zzz`.

  In addition to looking for system properties with the names specified above, this implementation also checks for a class loader resource named `"simplelog.properties"`, and includes any matching definitions from this resource (if it exists).

  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected int` | `currentLogLevel` The current log level
    `protected static java.text.DateFormat` | `dateFormatter` Used to format times.
    `protected static java.lang.String` | `dateTimeFormat` The date and time format to use in the log message
    `protected static java.lang.String` | `DEFAULT_DATE_TIME_FORMAT` The default format to use when formating dates
    `static int` | `LOG_LEVEL_ALL` Enable all logging levels
    `static int` | `LOG_LEVEL_DEBUG` "Debug" level logging.
    `static int` | `LOG_LEVEL_ERROR` "Error" level logging.
    `static int` | `LOG_LEVEL_FATAL` "Fatal" level logging.
    `static int` | `LOG_LEVEL_INFO` "Info" level logging.
    `static int` | `LOG_LEVEL_OFF` Enable no logging levels
    `static int` | `LOG_LEVEL_TRACE` "Trace" level logging.
    `static int` | `LOG_LEVEL_WARN` "Warn" level logging.
    `protected java.lang.String` | `logName` The name of this simple log instance
    `protected static boolean` | `showDateTime` Include the current time in the log message
    `protected static boolean` | `showLogName` Include the instance name in the log message?
    `protected static boolean` | `showShortName` Include the short name ( last component ) of the logger in the log message.
    `protected static java.util.Properties` | `simpleLogProps` Properties loaded from simplelog.properties
    `protected static java.lang.String` | `systemPrefix` All system properties used by `SimpleLog` start with this

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SimpleLog(java.lang.String name)` Construct a simple log with given name.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `debug(java.lang.Object message)` Logs a message with `org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_DEBUG`.
    `void` | `debug(java.lang.Object message, java.lang.Throwable t)` Logs a message with `org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_DEBUG`.
    `void` | `error(java.lang.Object message)` Logs a message with `org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_ERROR`.
    `void` | `error(java.lang.Object message, java.lang.Throwable t)` Logs a message with `org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_ERROR`.
    `void` | `fatal(java.lang.Object message)` Log a message with `org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_FATAL`.
    `void` | `fatal(java.lang.Object message, java.lang.Throwable t)` Logs a message with `org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_FATAL`.
    `int` | `getLevel()` Get logging level.
    `void` | `info(java.lang.Object message)` Logs a message with `org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_INFO`.
    `void` | `info(java.lang.Object message, java.lang.Throwable t)` Logs a message with `org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_INFO`.
    `boolean` | `isDebugEnabled()` Are debug messages currently enabled?
    `boolean` | `isErrorEnabled()` Are error messages currently enabled?
    `boolean` | `isFatalEnabled()` Are fatal messages currently enabled?
    `boolean` | `isInfoEnabled()` Are info messages currently enabled?
    `protected boolean` | `isLevelEnabled(int logLevel)` Is the given log level currently enabled?
    `boolean` | `isTraceEnabled()` Are trace messages currently enabled?
    `boolean` | `isWarnEnabled()` Are warn messages currently enabled?
    `protected void` | `log(int type, java.lang.Object message, java.lang.Throwable t)` Do the actual logging.
    `void` | `setLevel(int currentLogLevel)` Set logging level.
    `void` | `trace(java.lang.Object message)` Logs a message with `org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_TRACE`.
    `void` | `trace(java.lang.Object message, java.lang.Throwable t)` Logs a message with `org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_TRACE`.
    `void` | `warn(java.lang.Object message)` Logs a message with `org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_WARN`.
    `void` | `warn(java.lang.Object message, java.lang.Throwable t)` Logs a message with `org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_WARN`.
    `protected void` | `write(java.lang.StringBuffer buffer)` Write the content of the message accumulated in the specified `StringBuffer` to the appropriate output destination.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### systemPrefix

          protected static final java.lang.String systemPrefix

      All system properties used by `SimpleLog` start with this
      See Also:
        Constant Field Values

    - #### simpleLogProps

          protected static final java.util.Properties simpleLogProps

      Properties loaded from simplelog.properties

    - #### DEFAULT_DATE_TIME_FORMAT

          protected static final java.lang.String DEFAULT_DATE_TIME_FORMAT

      The default format to use when formating dates
      See Also:
        Constant Field Values

    - #### showLogName

          protected static volatile boolean showLogName

      Include the instance name in the log message?

    - #### showShortName

          protected static volatile boolean showShortName

      Include the short name ( last component ) of the logger in the log message. Defaults to true - otherwise we'll be lost in a flood of messages without knowing who sends them.

    - #### showDateTime

          protected static volatile boolean showDateTime

      Include the current time in the log message

    - #### dateTimeFormat

          protected static volatile java.lang.String dateTimeFormat

      The date and time format to use in the log message

    - #### dateFormatter

          protected static java.text.DateFormat dateFormatter

      Used to format times.

      Any code that accesses this object should first obtain a lock on it, ie use synchronized(dateFormatter); this requirement was introduced in 1.1.1 to fix an existing thread safety bug (SimpleDateFormat.format is not thread-safe).

    - #### LOG_LEVEL_TRACE

          public static final int LOG_LEVEL_TRACE

      "Trace" level logging.
      See Also:
        Constant Field Values

    - #### LOG_LEVEL_DEBUG

          public static final int LOG_LEVEL_DEBUG

      "Debug" level logging.
      See Also:
        Constant Field Values

    - #### LOG_LEVEL_INFO

          public static final int LOG_LEVEL_INFO

      "Info" level logging.
      See Also:
        Constant Field Values

    - #### LOG_LEVEL_WARN

          public static final int LOG_LEVEL_WARN

      "Warn" level logging.
      See Also:
        Constant Field Values

    - #### LOG_LEVEL_ERROR

          public static final int LOG_LEVEL_ERROR

      "Error" level logging.
      See Also:
        Constant Field Values

    - #### LOG_LEVEL_FATAL

          public static final int LOG_LEVEL_FATAL

      "Fatal" level logging.
      See Also:
        Constant Field Values

    - #### LOG_LEVEL_ALL

          public static final int LOG_LEVEL_ALL

      Enable all logging levels
      See Also:
        Constant Field Values

    - #### LOG_LEVEL_OFF

          public static final int LOG_LEVEL_OFF

      Enable no logging levels
      See Also:
        Constant Field Values

    - #### logName

          protected volatile java.lang.String logName

      The name of this simple log instance

    - #### currentLogLevel

          protected volatile int currentLogLevel

      The current log level

  - ### Constructor Detail

    - #### SimpleLog

          public SimpleLog(java.lang.String name)

      Construct a simple log with given name.
      Parameters:
        `name` - log name

  - ### Method Detail

    - #### setLevel

          public void setLevel(int currentLogLevel)

      Set logging level.
      Parameters:
        `currentLogLevel` - new logging level

    - #### getLevel

          public int getLevel()

      Get logging level.

    - #### log

          protected void log(int type,
                 java.lang.Object message,
                 java.lang.Throwable t)

      Do the actual logging.

      This method assembles the message and then calls `write()` to cause it to be written.

      Parameters:
        `type` - One of the LOG_LEVEL_XXX constants defining the log level
        `message` - The message itself (typically a String)
        `t` - The exception whose stack trace should be logged

    - #### write

          protected void write(java.lang.StringBuffer buffer)

      Write the content of the message accumulated in the specified `StringBuffer` to the appropriate output destination. The default implementation writes to `System.err`.
      Parameters:
        `buffer` - A `StringBuffer` containing the accumulated text to be logged

    - #### isLevelEnabled

          protected boolean isLevelEnabled(int logLevel)

      Is the given log level currently enabled?
      Parameters:
        `logLevel` - is this level enabled?

    - #### debug

          public final void debug(java.lang.Object message)

      Logs a message with `org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_DEBUG`.
      Specified by:
        `debug` in interface `Log`
      Parameters:
        `message` - to log
      See Also:
        `Log.debug(Object)`

    - #### debug

          public final void debug(java.lang.Object message,
                   java.lang.Throwable t)

      Logs a message with `org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_DEBUG`.
      Specified by:
        `debug` in interface `Log`
      Parameters:
        `message` - to log
        `t` - log this cause
      See Also:
        `Log.debug(Object, Throwable)`

    - #### trace

          public final void trace(java.lang.Object message)

      Logs a message with `org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_TRACE`.
      Specified by:
        `trace` in interface `Log`
      Parameters:
        `message` - to log
      See Also:
        `Log.trace(Object)`

    - #### trace

          public final void trace(java.lang.Object message,
                   java.lang.Throwable t)

      Logs a message with `org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_TRACE`.
      Specified by:
        `trace` in interface `Log`
      Parameters:
        `message` - to log
        `t` - log this cause
      See Also:
        `Log.trace(Object, Throwable)`

    - #### info

          public final void info(java.lang.Object message)

      Logs a message with `org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_INFO`.
      Specified by:
        `info` in interface `Log`
      Parameters:
        `message` - to log
      See Also:
        `Log.info(Object)`

    - #### info

          public final void info(java.lang.Object message,
                  java.lang.Throwable t)

      Logs a message with `org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_INFO`.
      Specified by:
        `info` in interface `Log`
      Parameters:
        `message` - to log
        `t` - log this cause
      See Also:
        `Log.info(Object, Throwable)`

    - #### warn

          public final void warn(java.lang.Object message)

      Logs a message with `org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_WARN`.
      Specified by:
        `warn` in interface `Log`
      Parameters:
        `message` - to log
      See Also:
        `Log.warn(Object)`

    - #### warn

          public final void warn(java.lang.Object message,
                  java.lang.Throwable t)

      Logs a message with `org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_WARN`.
      Specified by:
        `warn` in interface `Log`
      Parameters:
        `message` - to log
        `t` - log this cause
      See Also:
        `Log.warn(Object, Throwable)`

    - #### error

          public final void error(java.lang.Object message)

      Logs a message with `org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_ERROR`.
      Specified by:
        `error` in interface `Log`
      Parameters:
        `message` - to log
      See Also:
        `Log.error(Object)`

    - #### error

          public final void error(java.lang.Object message,
                   java.lang.Throwable t)

      Logs a message with `org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_ERROR`.
      Specified by:
        `error` in interface `Log`
      Parameters:
        `message` - to log
        `t` - log this cause
      See Also:
        `Log.error(Object, Throwable)`

    - #### fatal

          public final void fatal(java.lang.Object message)

      Log a message with `org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_FATAL`.
      Specified by:
        `fatal` in interface `Log`
      Parameters:
        `message` - to log
      See Also:
        `Log.fatal(Object)`

    - #### fatal

          public final void fatal(java.lang.Object message,
                   java.lang.Throwable t)

      Logs a message with `org.apache.commons.logging.impl.SimpleLog.LOG_LEVEL_FATAL`.
      Specified by:
        `fatal` in interface `Log`
      Parameters:
        `message` - to log
        `t` - log this cause
      See Also:
        `Log.fatal(Object, Throwable)`

    - #### isDebugEnabled

          public final boolean isDebugEnabled()

      Are debug messages currently enabled?

      This allows expensive operations such as `String` concatenation to be avoided when the message will be ignored by the logger.

      Specified by:
        `isDebugEnabled` in interface `Log`
      Returns:
        true if debug is enabled in the underlying logger.

    - #### isErrorEnabled

          public final boolean isErrorEnabled()

      Are error messages currently enabled?

      This allows expensive operations such as `String` concatenation to be avoided when the message will be ignored by the logger.

      Specified by:
        `isErrorEnabled` in interface `Log`
      Returns:
        true if error is enabled in the underlying logger.

    - #### isFatalEnabled

          public final boolean isFatalEnabled()

      Are fatal messages currently enabled?

      This allows expensive operations such as `String` concatenation to be avoided when the message will be ignored by the logger.

      Specified by:
        `isFatalEnabled` in interface `Log`
      Returns:
        true if fatal is enabled in the underlying logger.

    - #### isInfoEnabled

          public final boolean isInfoEnabled()

      Are info messages currently enabled?

      This allows expensive operations such as `String` concatenation to be avoided when the message will be ignored by the logger.

      Specified by:
        `isInfoEnabled` in interface `Log`
      Returns:
        true if info is enabled in the underlying logger.

    - #### isTraceEnabled

          public final boolean isTraceEnabled()

      Are trace messages currently enabled?

      This allows expensive operations such as `String` concatenation to be avoided when the message will be ignored by the logger.

      Specified by:
        `isTraceEnabled` in interface `Log`
      Returns:
        true if trace is enabled in the underlying logger.

    - #### isWarnEnabled

          public final boolean isWarnEnabled()

      Are warn messages currently enabled?

      This allows expensive operations such as `String` concatenation to be avoided when the message will be ignored by the logger.

      Specified by:
        `isWarnEnabled` in interface `Log`
      Returns:
        true if warn is enabled in the underlying logger.