cx.ath.matthew.debug

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

static interface
Debug.FilterCommand
This interface can be used to provide custom printing filters for certain classes.

Field Summary

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

Method Summary

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(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, 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, 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(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(int loglevel, byte[] b)
Log a byte array
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(Map m)
Log a Map at DEBUG log level
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(int loglevel, Map m)
Log a Map
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.

Field Details

CRIT

public static final int CRIT
Highest priority messages
Field Value:
1

DEBUG

public static final int DEBUG
Debug messages
Field Value:
5

ERR

public static final int ERR
Error messages
Field Value:
2

INFO

public static final int INFO
Information
Field Value:
4

VERBOSE

public static final int VERBOSE
Verbose debug messages
Field Value:
6

WARN

public static final int WARN
Warnings
Field Value:
3

debug

public static final boolean debug
Set this to false to disable compilation of Debug statements
Field Value:
false

debugout

public static PrintStream debugout
The current output stream (defaults to System.err)

Method Details

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.

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)

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.

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(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(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(int loglevel,
                         Object o)
Log an Object
Parameters:
loglevel - The level to log at (DEBUG, WARN, etc)
o - The object to log

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(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

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.

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(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(int loglevel,
                            Map m)
Log a Map
Parameters:
loglevel - The level to log at (DEBUG, WARN, etc)
m - The Map to print out

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)

setHexDump

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

setLineNos

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

setOutput

public static void setOutput()
            throws IOException
Output to the default debug.log

setOutput

public static void setOutput(PrintStream p)
            throws IOException
Output to the given Stream

setOutput

public static void setOutput(String filename)
            throws IOException
Output to the given file

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.

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.