Class SimpleLogger

  • All Implemented Interfaces:
    java.io.Serializable, org.slf4j.Logger
    Direct Known Subclasses:
    MavenSimpleLogger

    public class SimpleLogger
    extends org.slf4j.helpers.LegacyAbstractLogger

    Simple implementation of Logger that sends all enabled log messages, for all defined loggers, to the console (System.err). The following system properties are supported to configure the behavior of this logger:

    • org.slf4j.simpleLogger.logFile - The output target which can be the path to a file, or the special values "System.out" and "System.err". Default is "System.err".
    • org.slf4j.simpleLogger.cacheOutputStream - If the output target is set to "System.out" or "System.err" (see preceding entry), by default, logs will be output to the latest value referenced by System.out/err variables. By setting this parameter to true, the output stream will be cached, i.e. assigned once at initialization time and re-used independently of the current value referenced by System.out/err.
    • org.slf4j.simpleLogger.defaultLogLevel - Default log level for all instances of SimpleLogger. Must be one of ("trace", "debug", "info", "warn", "error" or "off"). If not specified, defaults to "info".
    • org.slf4j.simpleLogger.log.a.b.c - Logging detail level for a SimpleLogger instance named "a.b.c". Right-side value must be one of "trace", "debug", "info", "warn", "error" or "off". When a SimpleLogger named "a.b.c" is initialized, its level is assigned from this property. If unspecified, the level of nearest parent logger will be used, and if none is set, then the value specified by org.slf4j.simpleLogger.defaultLogLevel will be used.
    • org.slf4j.simpleLogger.showDateTime - Set to true if you want the current date and time to be included in output messages. Default is false
    • org.slf4j.simpleLogger.dateTimeFormat - The date and time format to be used in the output messages. The pattern describing the date and time format is defined by SimpleDateFormat. If the format is not specified or is invalid, the number of milliseconds since start up will be output.
    • org.slf4j.simpleLogger.showThreadName -Set to true if you want to output the current thread name. Defaults to true.
    • (since version 1.7.33 and 2.0.0-alpha6) org.slf4j.simpleLogger.showThreadId - If you would like to output the current thread id, then set to true. Defaults to false.
    • org.slf4j.simpleLogger.showLogName - Set to true if you want the Logger instance name to be included in output messages. Defaults to true.
    • org.slf4j.simpleLogger.showShortLogName - Set to true if you want the last component of the name to be included in output messages. Defaults to false.
    • org.slf4j.simpleLogger.levelInBrackets - Should the level string be output in brackets? Defaults to false.
    • org.slf4j.simpleLogger.warnLevelString - The string value output for the warn level. Defaults to WARN.

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

    With no configuration, the default output includes the relative time in milliseconds, thread name, the level, logger name, and the message followed by the line separator for the host. In log4j terms it amounts to the "%r [%t] %level %logger - %m%n" pattern.

    Sample output follows.

     176 [main] INFO examples.Sort - Populating an array of 2 elements in reverse order.
     225 [main] INFO examples.SortAlgo - Entered the sort method.
     304 [main] INFO examples.SortAlgo - Dump of integer array:
     317 [main] INFO examples.SortAlgo - Element [0] = 0
     331 [main] INFO examples.SortAlgo - Element [1] = 1
     343 [main] INFO examples.Sort - The next log statement should be an error message.
     346 [main] ERROR examples.SortAlgo - Tried to dump an uninitialized array.
       at org.log4j.examples.SortAlgo.dump(SortAlgo.java:58)
       at org.log4j.examples.Sort.main(Sort.java:64)
     467 [main] INFO  examples.Sort - Exiting main method.
     

    This implementation is heavily inspired by Apache Commons Logging's SimpleLog.

    Author:
    Ceki Gülcü, Scott Sanders, Rod Waldhoff, Robert Burrell Donkin, Cédrik LIME
    See Also:
    Serialized Form
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected SimpleLogger​(java.lang.String name)
      Protected access allows only SimpleLoggerFactory and also derived classes to instantiate SimpleLogger instances.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected java.lang.String getFullyQualifiedCallerName()  
      protected void handleNormalizedLoggingCall​(org.slf4j.event.Level level, org.slf4j.Marker marker, java.lang.String messagePattern, java.lang.Object[] arguments, java.lang.Throwable throwable)
      SimpleLogger's implementation of AbstractLogger#handleNormalizedLoggingCall }
      boolean isDebugEnabled()
      Are debug messages currently enabled?
      boolean isErrorEnabled()
      Are error 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?
      void log​(org.slf4j.event.LoggingEvent event)  
      protected java.lang.String renderLevel​(int levelInt)  
      protected void writeThrowable​(java.lang.Throwable t, java.io.PrintStream targetStream)  
      • Methods inherited from class org.slf4j.helpers.LegacyAbstractLogger

        isDebugEnabled, isErrorEnabled, isInfoEnabled, isTraceEnabled, isWarnEnabled
      • Methods inherited from class org.slf4j.helpers.AbstractLogger

        debug, debug, debug, debug, debug, debug, debug, debug, debug, debug, error, error, error, error, error, error, error, error, error, error, getName, info, info, info, info, info, info, info, info, info, info, readResolve, trace, trace, trace, trace, trace, trace, trace, trace, trace, trace, warn, warn, warn, warn, warn, warn, warn, warn, warn, warn
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface org.slf4j.Logger

        atDebug, atError, atInfo, atLevel, atTrace, atWarn, isEnabledForLevel, makeLoggingEventBuilder
    • Field Detail

      • currentLogLevel

        protected int currentLogLevel
        The current log level
      • SYSTEM_PREFIX

        public static final java.lang.String SYSTEM_PREFIX
        All system properties used by SimpleLogger start with this prefix
        See Also:
        Constant Field Values
      • CACHE_OUTPUT_STREAM_STRING_KEY

        public static final java.lang.String CACHE_OUTPUT_STREAM_STRING_KEY
        See Also:
        Constant Field Values
      • WARN_LEVEL_STRING_KEY

        public static final java.lang.String WARN_LEVEL_STRING_KEY
        See Also:
        Constant Field Values
      • LEVEL_IN_BRACKETS_KEY

        public static final java.lang.String LEVEL_IN_BRACKETS_KEY
        See Also:
        Constant Field Values
      • SHOW_SHORT_LOG_NAME_KEY

        public static final java.lang.String SHOW_SHORT_LOG_NAME_KEY
        See Also:
        Constant Field Values
      • SHOW_LOG_NAME_KEY

        public static final java.lang.String SHOW_LOG_NAME_KEY
        See Also:
        Constant Field Values
      • SHOW_THREAD_NAME_KEY

        public static final java.lang.String SHOW_THREAD_NAME_KEY
        See Also:
        Constant Field Values
      • SHOW_THREAD_ID_KEY

        public static final java.lang.String SHOW_THREAD_ID_KEY
        See Also:
        Constant Field Values
      • DATE_TIME_FORMAT_KEY

        public static final java.lang.String DATE_TIME_FORMAT_KEY
        See Also:
        Constant Field Values
      • SHOW_DATE_TIME_KEY

        public static final java.lang.String SHOW_DATE_TIME_KEY
        See Also:
        Constant Field Values
      • DEFAULT_LOG_LEVEL_KEY

        public static final java.lang.String DEFAULT_LOG_LEVEL_KEY
        See Also:
        Constant Field Values
    • Constructor Detail

      • SimpleLogger

        protected SimpleLogger​(java.lang.String name)
        Protected access allows only SimpleLoggerFactory and also derived classes to instantiate SimpleLogger instances.
    • Method Detail

      • writeThrowable

        protected void writeThrowable​(java.lang.Throwable t,
                                      java.io.PrintStream targetStream)
      • isLevelEnabled

        protected boolean isLevelEnabled​(int logLevel)
        Is the given log level currently enabled?
        Parameters:
        logLevel - is this level enabled?
        Returns:
        whether the logger is enabled for the given level
      • isTraceEnabled

        public boolean isTraceEnabled()
        Are trace messages currently enabled?
      • isDebugEnabled

        public boolean isDebugEnabled()
        Are debug messages currently enabled?
      • isInfoEnabled

        public boolean isInfoEnabled()
        Are info messages currently enabled?
      • isWarnEnabled

        public boolean isWarnEnabled()
        Are warn messages currently enabled?
      • isErrorEnabled

        public boolean isErrorEnabled()
        Are error messages currently enabled?
      • handleNormalizedLoggingCall

        protected void handleNormalizedLoggingCall​(org.slf4j.event.Level level,
                                                   org.slf4j.Marker marker,
                                                   java.lang.String messagePattern,
                                                   java.lang.Object[] arguments,
                                                   java.lang.Throwable throwable)
        SimpleLogger's implementation of AbstractLogger#handleNormalizedLoggingCall }
        Specified by:
        handleNormalizedLoggingCall in class org.slf4j.helpers.AbstractLogger
        Parameters:
        level - the SLF4J level for this event
        marker - The marker to be used for this event, may be null.
        messagePattern - The message pattern which will be parsed and formatted
        arguments - the array of arguments to be formatted, may be null
        throwable - The exception whose stack trace should be logged, may be null
      • renderLevel

        protected java.lang.String renderLevel​(int levelInt)
      • log

        public void log​(org.slf4j.event.LoggingEvent event)
      • getFullyQualifiedCallerName

        protected java.lang.String getFullyQualifiedCallerName()
        Specified by:
        getFullyQualifiedCallerName in class org.slf4j.helpers.AbstractLogger