Class Logger


  • public class Logger
    extends java.lang.Object
    TestNG support logging via a custom logging framework similar to Log4j. To control logging, add a resource named "log4testng.properties" to your classpath. The logging levels are TRACE, DEBUG, INFO, WARN, ERROR and FATAL. The Logging framework has the following characteristics:
    • All logging is done using System.out (for levels < ERROR) or System.err. There is no way to specify Appenders.
    • There is no way to control logging programmatically.
    • The log4testng.properties resource is searched in the classpath on the first call to the logging API. If it is not present, logging defaults to the WARN level.
    The property file contains lines in the following format:
    
     # log4testng will log its own behavior (generally used for debugging this package only).
     log4testng.debug=true
    
     # Specifies the root Loggers logging level. Will log DEBUG level and above
     log4testng.rootLogger=DEBUG
    
     # The org.testng.reporters.EmailableReporter Logger will log TRACE level and above
     log4testng.logger.org.testng.reporters.EmailableReporter=TRACE
    
     # All Logger in packages below org.testng will log WARN level and above
     log4testng.logger.org.testng=WARN
     
    In your source files you will typically instantiate and use loggers this ways:
    
     import org.testng.log4testng.Logger;
    
     class ThisClass {
         private static final Logger LOGGER = Logger.getLogger(ThisClass.class);
    
         ...
         LOGGER.debug("entering myMethod()");
         ...
         LOGGER.warn("unknown file: " + filename);
         ...
         LOGGER.error("Unexpected error", exception);
     
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static boolean debug
      Should log4testng log what it is doing (defaults to false).
      private static int DEBUG  
      private static java.lang.String DEBUG_PROPERTY
      Debug property name in log4testng.properties.
      private static java.io.PrintStream err
      The standard error stream (this is allways System.err except for unit tests)
      private static int ERROR  
      private static int FATAL  
      private static int i  
      private static int INFO  
      private static boolean initialized
      true if the Logging system has been initialized.
      private java.lang.Class klass
      The logger's name.
      private int level
      The logger's level
      private static int LEVEL_COUNT  
      private static java.util.Map<java.lang.String,​java.lang.Integer> levelMap
      A map from level name to level integer index (TRACE->0, DEBUG->1 ...)
      private static java.lang.String[] levelNames
      An ordered list of level names.
      private static java.lang.String LOGGER_PREFIX
      Standard prefix of all logger names in log4testng.properties.
      private static java.util.Map<java.lang.String,​java.lang.Integer> loggerLevels
      Map from Logger names to level index (as specified in log4testng.properties)
      private static java.util.Map<java.lang.Class,​Logger> loggers
      Map of all known loggers.
      private java.lang.String m_className  
      private static java.io.PrintStream out
      The standard output stream (this is allways System.out except for unit tests)
      private static java.lang.String PREFIX
      Standard prefix of all property names in log4testng.properties.
      private static java.lang.String ROOT_LOGGER
      Root logger name in log4testng.properties.
      private static int rootLoggerLevel
      The logging level of the root logger (defaults to warn).
      private static int TRACE  
      private static int WARN  
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private Logger​(java.lang.Class pClass, int pLevel)  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private static void checkProperties​(java.util.Properties pProperties)  
      void debug​(java.lang.Object message)
      Log a message object with the DEBUG level.
      void debug​(java.lang.Object message, java.lang.Throwable t)
      Log a message object with the DEBUG level including the stack trace of the Throwable t passed as parameter.
      void error​(java.lang.Object message)
      Log a message object with the ERROR level.
      void error​(java.lang.Object message, java.lang.Throwable t)
      Log a message object with the DEBUG level including the stack trace of the Throwable t passed as parameter.
      void fatal​(java.lang.Object message)
      Log a message object with the FATAL level.
      void fatal​(java.lang.Object message, java.lang.Throwable t)
      Log a message object with the FATAL level including the stack trace of the Throwable t passed as parameter.
      private static int getLevel​(java.lang.Class pClass)
      Returns the level associated to the current class.
      static Logger getLogger​(java.lang.Class pClass)
      Retrieve a logger named according to the value of the pClass.getName() parameter.
      void info​(java.lang.Object message)
      Log a message object with the INFO level.
      void info​(java.lang.Object message, java.lang.Throwable t)
      Log a message object with the WARN level including the stack trace of the Throwable t passed as parameter.
      private static void initialize()  
      boolean isDebugEnabled()
      Check whether this logger is enabled for the DEBUG Level.
      boolean isInfoEnabled()
      Check whether this logger is enabled for the INFO Level.
      private boolean isLevelEnabled​(int pLevel)  
      boolean isTraceEnabled()
      Check whether this logger is enabled for the TRACE Level.
      private void log​(int pLevel, java.lang.Object pMessage, java.lang.Throwable pT)  
      private static void loglog4testng​(java.lang.String pmessage)
      Logs the message to System.out of debug is on.
      static void main​(java.lang.String[] pArgs)
      Run all tests.
      private static void testDebugDefault()
      Makes sure the default debug value is false.
      private static void testDebugError()
      Makes sure an illegal debug value throws an exception.
      private static void testDebugOff()
      Makes sure the debug value can be turned off and logs nothing.
      private static void testDebugOn()
      Makes sure the debug value can be turned on and actualls logs something.
      private static void testInitialize​(java.util.Properties pProperties, java.io.PrintStream pOut, java.io.PrintStream pErr)
      This method is for debugging purpose only.
      private static void testRootLoggerDefault()
      Tests that the root logger's default level is WARN and that loggers do not log bellow this level and do log in the correct stream for levels equal to and above WARN.
      private static void testRootLoggerSet()
      Test setting the root logger level
      private static void testRootLoggerSetError()
      Test setting the root logger to an illegal level value throws an exception.
      private static void testUserLoggerSet()
      Test setting a user logger level
      private static void testUserLoggerSetError()
      Test setting a user logger to an illegal level value throws an exception
      private static void testUserLoggerSetHierarchy()
      Tests setting a partial logger name (a hierarchy scope)
      void trace​(java.lang.Object message)
      Log a message object with the TRACE level.
      void trace​(java.lang.Object message, java.lang.Throwable t)
      Log a message object with the TRACE level including the stack trace of the Throwable t passed as parameter.
      void warn​(java.lang.Object message)
      Log a message object with the WARN level.
      void warn​(java.lang.Object message, java.lang.Throwable t)
      Log a message object with the ERROR level including the stack trace of the Throwable t passed as parameter.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • i

        private static int i
      • TRACE

        private static final int TRACE
      • DEBUG

        private static final int DEBUG
      • INFO

        private static final int INFO
      • WARN

        private static final int WARN
      • ERROR

        private static final int ERROR
      • FATAL

        private static final int FATAL
      • LEVEL_COUNT

        private static final int LEVEL_COUNT
      • PREFIX

        private static final java.lang.String PREFIX
        Standard prefix of all property names in log4testng.properties.
        See Also:
        Constant Field Values
      • LOGGER_PREFIX

        private static final java.lang.String LOGGER_PREFIX
        Standard prefix of all logger names in log4testng.properties.
        See Also:
        Constant Field Values
      • ROOT_LOGGER

        private static final java.lang.String ROOT_LOGGER
        Root logger name in log4testng.properties.
        See Also:
        Constant Field Values
      • DEBUG_PROPERTY

        private static final java.lang.String DEBUG_PROPERTY
        Debug property name in log4testng.properties.
        See Also:
        Constant Field Values
      • err

        private static java.io.PrintStream err
        The standard error stream (this is allways System.err except for unit tests)
      • out

        private static java.io.PrintStream out
        The standard output stream (this is allways System.out except for unit tests)
      • levelNames

        private static final java.lang.String[] levelNames
        An ordered list of level names.
      • levelMap

        private static final java.util.Map<java.lang.String,​java.lang.Integer> levelMap
        A map from level name to level integer index (TRACE->0, DEBUG->1 ...)
      • initialized

        private static boolean initialized
        true if the Logging system has been initialized.
      • loggerLevels

        private static final java.util.Map<java.lang.String,​java.lang.Integer> loggerLevels
        Map from Logger names to level index (as specified in log4testng.properties)
      • loggers

        private static final java.util.Map<java.lang.Class,​Logger> loggers
        Map of all known loggers.
      • rootLoggerLevel

        private static int rootLoggerLevel
        The logging level of the root logger (defaults to warn).
      • debug

        private static boolean debug
        Should log4testng log what it is doing (defaults to false).
      • level

        private final int level
        The logger's level
      • klass

        private final java.lang.Class klass
        The logger's name.
      • m_className

        private final java.lang.String m_className
    • Constructor Detail

      • Logger

        private Logger​(java.lang.Class pClass,
                       int pLevel)
    • Method Detail

      • getLogger

        public static Logger getLogger​(java.lang.Class pClass)
        Retrieve a logger named according to the value of the pClass.getName() parameter. If the named logger already exists, then the existing instance will be returned. Otherwise, a new instance is created. By default, loggers do not have a set level but inherit it from their nearest ancestor with a set level.
        Parameters:
        pClass - The class' logger to retrieve.
        Returns:
        a logger named according to the value of the pClass.getName().
      • isTraceEnabled

        public boolean isTraceEnabled()
        Check whether this logger is enabled for the TRACE Level.
        Returns:
        true if this logger is enabled for level TRACE, false otherwise.
      • trace

        public void trace​(java.lang.Object message)
        Log a message object with the TRACE level. This method first checks if this logger is TRACE enabled. If this logger is TRACE enabled, then it converts the message object (passed as parameter) to a string by invoking toString(). WARNING Note that passing a Throwable to this method will print the name of the Throwable but no stack trace. To print a stack trace use the trace(Object, Throwable) form instead.
        Parameters:
        message - the message object to log.
      • trace

        public void trace​(java.lang.Object message,
                          java.lang.Throwable t)
        Log a message object with the TRACE level including the stack trace of the Throwable t passed as parameter. See Logger.trace(Object) form for more detailed information.
        Parameters:
        message - the message object to log.
        t - the exception to log, including its stack trace.
      • isDebugEnabled

        public boolean isDebugEnabled()
        Check whether this logger is enabled for the DEBUG Level.
        Returns:
        true if this logger is enabled for level DEBUG, false otherwise.
      • debug

        public void debug​(java.lang.Object message)
        Log a message object with the DEBUG level. See Logger.trace(Object) form for more detailed information.
        Parameters:
        message - the message object to log.
      • debug

        public void debug​(java.lang.Object message,
                          java.lang.Throwable t)
        Log a message object with the DEBUG level including the stack trace of the Throwable t passed as parameter. See Logger.trace(Object, Throwable) form for more detailed information.
        Parameters:
        message - the message object to log.
        t - the exception to log, including its stack trace.
      • isInfoEnabled

        public boolean isInfoEnabled()
        Check whether this logger is enabled for the INFO Level.
        Returns:
        true if this logger is enabled for level INFO, false otherwise.
      • info

        public void info​(java.lang.Object message)
        Log a message object with the INFO level. See Logger.trace(Object) form for more detailed information.
        Parameters:
        message - the message object to log.
      • info

        public void info​(java.lang.Object message,
                         java.lang.Throwable t)
        Log a message object with the WARN level including the stack trace of the Throwable t passed as parameter. See Logger.trace(Object, Throwable) form for more detailed information.
        Parameters:
        message - the message object to log.
        t - the exception to log, including its stack trace.
      • warn

        public void warn​(java.lang.Object message)
        Log a message object with the WARN level. See Logger.trace(Object) form for more detailed information.
        Parameters:
        message - the message object to log.
      • warn

        public void warn​(java.lang.Object message,
                         java.lang.Throwable t)
        Log a message object with the ERROR level including the stack trace of the Throwable t passed as parameter. See Logger.trace(Object, Throwable) form for more detailed information.
        Parameters:
        message - the message object to log.
        t - the exception to log, including its stack trace.
      • error

        public void error​(java.lang.Object message)
        Log a message object with the ERROR level. See Logger.trace(Object) form for more detailed information.
        Parameters:
        message - the message object to log.
      • error

        public void error​(java.lang.Object message,
                          java.lang.Throwable t)
        Log a message object with the DEBUG level including the stack trace of the Throwable t passed as parameter. See Logger.trace(Object, Throwable) form for more detailed information.
        Parameters:
        message - the message object to log.
        t - the exception to log, including its stack trace.
      • fatal

        public void fatal​(java.lang.Object message)
        Log a message object with the FATAL level. See Logger.trace(Object) form for more detailed information.
        Parameters:
        message - the message object to log.
      • fatal

        public void fatal​(java.lang.Object message,
                          java.lang.Throwable t)
        Log a message object with the FATAL level including the stack trace of the Throwable t passed as parameter. See Logger.trace(Object, Throwable) form for more detailed information.
        Parameters:
        message - the message object to log.
        t - the exception to log, including its stack trace.
      • initialize

        private static void initialize()
      • checkProperties

        private static void checkProperties​(java.util.Properties pProperties)
      • getLevel

        private static int getLevel​(java.lang.Class pClass)
        Returns the level associated to the current class. The level is obtain by searching for a logger in the "testng-logging.properties" resource. For example, if class is "org.testng.TestNG" the the following loggers are searched in this order:
        1. "org.testng.TestNG"
        2. "org.testng"
        3. "org"
        4. The root level
        Parameters:
        pClass - the class name used for logger name.
        Returns:
        the level associated to the current class.
      • isLevelEnabled

        private boolean isLevelEnabled​(int pLevel)
      • log

        private void log​(int pLevel,
                         java.lang.Object pMessage,
                         java.lang.Throwable pT)
      • loglog4testng

        private static void loglog4testng​(java.lang.String pmessage)
        Logs the message to System.out of debug is on.
        Parameters:
        pmessage - the message to log to the console
      • testInitialize

        private static void testInitialize​(java.util.Properties pProperties,
                                           java.io.PrintStream pOut,
                                           java.io.PrintStream pErr)
        This method is for debugging purpose only.
        Parameters:
        pProperties - a properties bundle initialised as log4testng property file would be.
        pOut - the standard output stream to be used for logging.
        pErr - the standard error stream to be used for logging.
      • testDebugDefault

        private static void testDebugDefault()
        Makes sure the default debug value is false.
      • testDebugOn

        private static void testDebugOn()
        Makes sure the debug value can be turned on and actualls logs something.
      • testDebugOff

        private static void testDebugOff()
        Makes sure the debug value can be turned off and logs nothing.
      • testDebugError

        private static void testDebugError()
        Makes sure an illegal debug value throws an exception.
      • testRootLoggerDefault

        private static void testRootLoggerDefault()
        Tests that the root logger's default level is WARN and that loggers do not log bellow this level and do log in the correct stream for levels equal to and above WARN.
      • testRootLoggerSet

        private static void testRootLoggerSet()
        Test setting the root logger level
      • testRootLoggerSetError

        private static void testRootLoggerSetError()
        Test setting the root logger to an illegal level value throws an exception.
      • testUserLoggerSet

        private static void testUserLoggerSet()
        Test setting a user logger level
      • testUserLoggerSetError

        private static void testUserLoggerSetError()
        Test setting a user logger to an illegal level value throws an exception
      • testUserLoggerSetHierarchy

        private static void testUserLoggerSetHierarchy()
        Tests setting a partial logger name (a hierarchy scope)
      • main

        public static void main​(java.lang.String[] pArgs)
        Run all tests. (very crusty ...)
        Parameters:
        pArgs - not used