Class Debug


  • public class Debug
    extends Object
    Add debugging to your program, has support for large projects with multiple classes and debug levels per class. Supports optional enabling of debug per-level per-class and debug targets of files, Streams or stderr. Also supports timing between debug outputs, printing of stack traces for Throwables and files/line numbers on each message.

    Debug now automatically figures out which class it was called from, so all methods passing in the calling class are deprecated.

    The defaults are to print all messages to stderr with class and method name.

    Should be called like this:

       if (Debug.debug) Debug.print(Debug.INFO, "Debug Message");
      
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static interface  Debug.FilterCommand
      This interface can be used to provide custom printing filters for certain classes.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static int CRIT
      Highest priority messages
      static boolean debug
      Set this to false to disable compilation of Debug statements
      static int DEBUG
      Debug messages
      static PrintStream debugout
      The current output stream (defaults to System.err)
      static int ERR
      Error messages
      static int INFO
      Information
      static int VERBOSE
      Verbose debug messages
      static int WARN
      Warnings
    • Constructor Summary

      Constructors 
      Constructor Description
      Debug()  
    • Method Summary

      All Methods Static Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      static void addFilterCommand​(Class c, Debug.FilterCommand f)
      Add a filter command for a specific type.
      static boolean debugging​(Class c, int loglevel)
      Deprecated.
      In Java 1.5 calling class is automatically identified, no need to pass it in.
      static boolean debugging​(String s, int loglevel)  
      static void loadConfig​(File f)
      Read which class to debug on at which level from the given File.
      static void print​(int loglevel, byte[] b)
      Log a byte array
      static void print​(int loglevel, Object o)
      Log an Object
      static void print​(int loglevel, String s)
      Log a String
      static void print​(int loglevel, Throwable t)
      Log a Throwable
      static void print​(Class c, int loglevel, Object d)
      Deprecated.
      In Java 1.5 calling class is automatically identified, no need to pass it in.
      static void print​(Class c, int loglevel, String s)
      Deprecated.
      In Java 1.5 calling class is automatically identified, no need to pass it in.
      static void print​(Class c, int loglevel, Throwable t)
      Deprecated.
      In Java 1.5 calling class is automatically identified, no need to pass it in.
      static void print​(Object d)
      Log at DEBUG
      static void print​(Object o, int loglevel, Object d)
      Deprecated.
      In Java 1.5 calling class is automatically identified, no need to pass it in.
      static void print​(Object o, int loglevel, String s)
      Deprecated.
      In Java 1.5 calling class is automatically identified, no need to pass it in.
      static void print​(Object o, int loglevel, Throwable t)
      Deprecated.
      In Java 1.5 calling class is automatically identified, no need to pass it in.
      static void print​(Object o, Object d)
      Deprecated.
      In Java 1.5 calling class is automatically identified, no need to pass it in.
      static void printMap​(int loglevel, Map m)
      Log a Map
      static void printMap​(Class c, int loglevel, Map m)
      Deprecated.
      In Java 1.5 calling class is automatically identified, no need to pass it in.
      static void printMap​(Object o, int loglevel, Map m)
      Deprecated.
      In Java 1.5 calling class is automatically identified, no need to pass it in.
      static void printMap​(Map m)
      Log a Map at DEBUG log level
      static void setByteArrayCount​(int count)
      Set the size of hexdumps.
      static void setByteArrayWidth​(int width)
      Set the formatted width of hexdumps.
      static void setHexDump​(boolean hexdump)
      Enable or disable hexdumps.
      static void setLineNos​(boolean lines)
      Enable or disable line numbers.
      static void setOutput()
      Output to the default debug.log
      static void setOutput​(PrintStream p)
      Output to the given Stream
      static void setOutput​(String filename)
      Output to the given file
      static void setProperties​(Properties prop)
      Set properties to configure debugging.
      static void setThrowableTraces​(boolean ttrace)
      Enable or disable stack traces in Debuging throwables.
      static void setTiming​(boolean timing)
      Enable or disable timing in Debug messages.
    • Constructor Detail

      • Debug

        public Debug()
    • Method Detail

      • setProperties

        public static void setProperties​(Properties prop)
        Set properties to configure debugging. Format of properties is class => level, e.g.
              cx.ath.matthew.io.TeeOutputStream = INFO
              cx.ath.matthew.io.DOMPrinter = DEBUG
             
        The debug level can be one of CRIT, ERR, WARN, INFO, DEBUG or VERBOSE which correspond to all messages up to that level. The special words YES, ALL and TRUE cause all messages to be printed regardless of level. All other terms disable messages for that class. CRIT and ERR messages are always printed if debugging is enabled unless explicitly disabled. The special class name ALL can be used to set the default level for all classes.
        Parameters:
        prop - Properties object to use.
      • loadConfig

        public static void loadConfig​(File f)
                               throws IOException
        Read which class to debug on at which level from the given File. Syntax the same as Java Properties files:
             <class> = <debuglevel>
             
        E.G.
              cx.ath.matthew.io.TeeOutputStream = INFO
              cx.ath.matthew.io.DOMPrinter = DEBUG
             
        The debug level can be one of CRIT, ERR, WARN, INFO, DEBUG or VERBOSE which correspond to all messages up to that level. The special words YES, ALL and TRUE cause all messages to be printed regardless of level. All other terms disable messages for that class. CRIT and ERR messages are always printed if debugging is enabled unless explicitly disabled. The special class name ALL can be used to set the default level for all classes.
        Parameters:
        f - File to read from.
        Throws:
        IOException
      • debugging

        public static boolean debugging​(Class c,
                                        int loglevel)
        Deprecated.
        In Java 1.5 calling class is automatically identified, no need to pass it in.
      • debugging

        public static boolean debugging​(String s,
                                        int loglevel)
      • setOutput

        public static void setOutput()
                              throws IOException
        Output to the default debug.log
        Throws:
        IOException
      • print

        public static void print​(Object d)
        Log at DEBUG
        Parameters:
        d - The object to log
      • print

        public static void print​(Object o,
                                 Object d)
        Deprecated.
        In Java 1.5 calling class is automatically identified, no need to pass it in.
        Log at DEBUG
        Parameters:
        o - The object doing the logging
        d - The object to log
      • print

        public static void print​(Object o,
                                 int loglevel,
                                 Object d)
        Deprecated.
        In Java 1.5 calling class is automatically identified, no need to pass it in.
        Log an Object
        Parameters:
        o - The object doing the logging
        loglevel - The level to log at (DEBUG, WARN, etc)
        d - The object to log with d.toString()
      • print

        public static void print​(Object o,
                                 int loglevel,
                                 String s)
        Deprecated.
        In Java 1.5 calling class is automatically identified, no need to pass it in.
        Log a String
        Parameters:
        o - The object doing the logging
        loglevel - The level to log at (DEBUG, WARN, etc)
        s - The log message
      • print

        public static void print​(Object o,
                                 int loglevel,
                                 Throwable t)
        Deprecated.
        In Java 1.5 calling class is automatically identified, no need to pass it in.
        Log a Throwable
        Parameters:
        o - The object doing the logging
        loglevel - The level to log at (DEBUG, WARN, etc)
        t - The throwable to log with .toString and .printStackTrace
      • print

        public static void print​(Class c,
                                 int loglevel,
                                 Throwable t)
        Deprecated.
        In Java 1.5 calling class is automatically identified, no need to pass it in.
        Log a Throwable
        Parameters:
        c - The class doing the logging
        loglevel - The level to log at (DEBUG, WARN, etc)
        t - The throwable to log with .toString and .printStackTrace
      • print

        public static void print​(int loglevel,
                                 Throwable t)
        Log a Throwable
        Parameters:
        loglevel - The level to log at (DEBUG, WARN, etc)
        t - The throwable to log with .toString and .printStackTrace
        See Also:
        to turn on stack traces.
      • print

        public static void print​(int loglevel,
                                 String s)
        Log a String
        Parameters:
        loglevel - The level to log at (DEBUG, WARN, etc)
        s - The string to log with d.toString()
      • print

        public static void print​(Class c,
                                 int loglevel,
                                 Object d)
        Deprecated.
        In Java 1.5 calling class is automatically identified, no need to pass it in.
        Log an Object
        Parameters:
        c - The class doing the logging
        loglevel - The level to log at (DEBUG, WARN, etc)
        d - The object to log with d.toString()
      • print

        public static void print​(Class c,
                                 int loglevel,
                                 String s)
        Deprecated.
        In Java 1.5 calling class is automatically identified, no need to pass it in.
        Log a String
        Parameters:
        c - The class doing the logging
        loglevel - The level to log at (DEBUG, WARN, etc)
        s - The log message
      • print

        public static void print​(int loglevel,
                                 Object o)
        Log an Object
        Parameters:
        loglevel - The level to log at (DEBUG, WARN, etc)
        o - The object to log
      • printMap

        public static void printMap​(Object o,
                                    int loglevel,
                                    Map m)
        Deprecated.
        In Java 1.5 calling class is automatically identified, no need to pass it in.
        Log a Map
        Parameters:
        o - The object doing the logging
        loglevel - The level to log at (DEBUG, WARN, etc)
        m - The Map to print out
      • printMap

        public static void printMap​(Class c,
                                    int loglevel,
                                    Map m)
        Deprecated.
        In Java 1.5 calling class is automatically identified, no need to pass it in.
        Log a Map
        Parameters:
        c - The class doing the logging
        loglevel - The level to log at (DEBUG, WARN, etc)
        m - The Map to print out
      • printMap

        public static void printMap​(Map m)
        Log a Map at DEBUG log level
        Parameters:
        m - The Map to print out
      • printMap

        public static void printMap​(int loglevel,
                                    Map m)
        Log a Map
        Parameters:
        loglevel - The level to log at (DEBUG, WARN, etc)
        m - The Map to print out
      • setThrowableTraces

        public static void setThrowableTraces​(boolean ttrace)
        Enable or disable stack traces in Debuging throwables.
      • setTiming

        public static void setTiming​(boolean timing)
        Enable or disable timing in Debug messages.
      • setLineNos

        public static void setLineNos​(boolean lines)
        Enable or disable line numbers.
      • setHexDump

        public static void setHexDump​(boolean hexdump)
        Enable or disable hexdumps.
      • setByteArrayCount

        public static void setByteArrayCount​(int count)
        Set the size of hexdumps. (Default: 36)
      • setByteArrayWidth

        public static void setByteArrayWidth​(int width)
        Set the formatted width of hexdumps. (Default: 80 chars)
      • addFilterCommand

        public static void addFilterCommand​(Class c,
                                            Debug.FilterCommand f)
        Add a filter command for a specific type. This command will be called with the output stream and the text to be sent. It should perform any changes necessary to the text and then print the result to the output stream.