Class Debug

java.lang.Object
cx.ath.matthew.debug.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 
    This interface can be used to provide custom printing filters for certain classes.
  • Field Summary

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

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static void
    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
    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
    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
    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
    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
    Output to the default debug.log
    static void
    Output to the given Stream
    static void
    setOutput(String filename)
    Output to the given file
    static void
    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.

    Methods inherited from class java.lang.Object

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

  • Constructor Details

    • Debug

      public Debug()
  • Method Details

    • 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(PrintStream p) throws IOException
      Output to the given Stream
      Throws:
      IOException
    • setOutput

      public static void setOutput(String filename) throws IOException
      Output to the given file
      Throws:
      IOException
    • 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:
    • print

      public static void print(int loglevel, byte[] b)
      Log a byte array
      Parameters:
      loglevel - The level to log at (DEBUG, WARN, etc)
      b - The byte array to print.
      See Also:
    • 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.