Package cx.ath.matthew.debug
Class Debug
- java.lang.Object
-
- cx.ath.matthew.debug.Debug
-
public class Debug extends java.lang.ObjectAdd 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 interfaceDebug.FilterCommandThis interface can be used to provide custom printing filters for certain classes.
-
Field Summary
Fields Modifier and Type Field Description static intCRITHighest priority messagesstatic booleandebugSet this to false to disable compilation of Debug statementsstatic intDEBUGDebug messagesstatic java.io.PrintStreamdebugoutThe current output stream (defaults to System.err)static intERRError messagesstatic intINFOInformationstatic intVERBOSEVerbose debug messagesstatic intWARNWarnings
-
Constructor Summary
Constructors Constructor Description Debug()
-
Method Summary
All Methods Static Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static voidaddFilterCommand(java.lang.Class c, Debug.FilterCommand f)Add a filter command for a specific type.static booleandebugging(java.lang.Class c, int loglevel)Deprecated.In Java 1.5 calling class is automatically identified, no need to pass it in.static booleandebugging(java.lang.String s, int loglevel)static voidloadConfig(java.io.File f)Read which class to debug on at which level from the given File.static voidprint(int loglevel, byte[] b)Log a byte arraystatic voidprint(int loglevel, java.lang.Object o)Log an Objectstatic voidprint(int loglevel, java.lang.String s)Log a Stringstatic voidprint(int loglevel, java.lang.Throwable t)Log a Throwablestatic voidprint(java.lang.Class c, int loglevel, java.lang.Object d)Deprecated.In Java 1.5 calling class is automatically identified, no need to pass it in.static voidprint(java.lang.Class c, int loglevel, java.lang.String s)Deprecated.In Java 1.5 calling class is automatically identified, no need to pass it in.static voidprint(java.lang.Class c, int loglevel, java.lang.Throwable t)Deprecated.In Java 1.5 calling class is automatically identified, no need to pass it in.static voidprint(java.lang.Object d)Log at DEBUGstatic voidprint(java.lang.Object o, int loglevel, java.lang.Object d)Deprecated.In Java 1.5 calling class is automatically identified, no need to pass it in.static voidprint(java.lang.Object o, int loglevel, java.lang.String s)Deprecated.In Java 1.5 calling class is automatically identified, no need to pass it in.static voidprint(java.lang.Object o, int loglevel, java.lang.Throwable t)Deprecated.In Java 1.5 calling class is automatically identified, no need to pass it in.static voidprint(java.lang.Object o, java.lang.Object d)Deprecated.In Java 1.5 calling class is automatically identified, no need to pass it in.static voidprintMap(int loglevel, java.util.Map m)Log a Mapstatic voidprintMap(java.lang.Class c, int loglevel, java.util.Map m)Deprecated.In Java 1.5 calling class is automatically identified, no need to pass it in.static voidprintMap(java.lang.Object o, int loglevel, java.util.Map m)Deprecated.In Java 1.5 calling class is automatically identified, no need to pass it in.static voidprintMap(java.util.Map m)Log a Map at DEBUG log levelstatic voidsetByteArrayCount(int count)Set the size of hexdumps.static voidsetByteArrayWidth(int width)Set the formatted width of hexdumps.static voidsetHexDump(boolean hexdump)Enable or disable hexdumps.static voidsetLineNos(boolean lines)Enable or disable line numbers.static voidsetOutput()Output to the default debug.logstatic voidsetOutput(java.io.PrintStream p)Output to the given Streamstatic voidsetOutput(java.lang.String filename)Output to the given filestatic voidsetProperties(java.util.Properties prop)Set properties to configure debugging.static voidsetThrowableTraces(boolean ttrace)Enable or disable stack traces in Debuging throwables.static voidsetTiming(boolean timing)Enable or disable timing in Debug messages.
-
-
-
Field Detail
-
CRIT
public static final int CRIT
Highest priority messages- See Also:
- Constant Field Values
-
ERR
public static final int ERR
Error messages- See Also:
- Constant Field Values
-
WARN
public static final int WARN
Warnings- See Also:
- Constant Field Values
-
INFO
public static final int INFO
Information- See Also:
- Constant Field Values
-
DEBUG
public static final int DEBUG
Debug messages- See Also:
- Constant Field Values
-
VERBOSE
public static final int VERBOSE
Verbose debug messages- See Also:
- Constant Field Values
-
debug
public static final boolean debug
Set this to false to disable compilation of Debug statements- See Also:
- Constant Field Values
-
debugout
public static java.io.PrintStream debugout
The current output stream (defaults to System.err)
-
-
Method Detail
-
setProperties
public static void setProperties(java.util.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 = DEBUGThe 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(java.io.File f) throws java.io.IOExceptionRead 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 = DEBUGThe 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:
java.io.IOException
-
debugging
public static boolean debugging(java.lang.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(java.lang.String s, int loglevel)
-
setOutput
public static void setOutput(java.io.PrintStream p) throws java.io.IOExceptionOutput to the given Stream- Throws:
java.io.IOException
-
setOutput
public static void setOutput(java.lang.String filename) throws java.io.IOExceptionOutput to the given file- Throws:
java.io.IOException
-
setOutput
public static void setOutput() throws java.io.IOExceptionOutput to the default debug.log- Throws:
java.io.IOException
-
print
public static void print(java.lang.Object d)
Log at DEBUG- Parameters:
d- The object to log
-
print
public static void print(java.lang.Object o, java.lang.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 loggingd- The object to log
-
print
public static void print(java.lang.Object o, int loglevel, java.lang.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 loggingloglevel- The level to log at (DEBUG, WARN, etc)d- The object to log with d.toString()
-
print
public static void print(java.lang.Object o, int loglevel, java.lang.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 loggingloglevel- The level to log at (DEBUG, WARN, etc)s- The log message
-
print
public static void print(java.lang.Object o, int loglevel, java.lang.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 loggingloglevel- The level to log at (DEBUG, WARN, etc)t- The throwable to log with .toString and .printStackTrace
-
print
public static void print(java.lang.Class c, int loglevel, java.lang.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 loggingloglevel- The level to log at (DEBUG, WARN, etc)t- The throwable to log with .toString and .printStackTrace
-
print
public static void print(int loglevel, java.lang.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, byte[] b)Log a byte array- Parameters:
loglevel- The level to log at (DEBUG, WARN, etc)b- The byte array to print.- See Also:
to enable hex dumping.,to change how many bytes are printed.,to change the formatting width of hex.
-
print
public static void print(int loglevel, java.lang.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(java.lang.Class c, int loglevel, java.lang.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 loggingloglevel- The level to log at (DEBUG, WARN, etc)d- The object to log with d.toString()
-
print
public static void print(java.lang.Class c, int loglevel, java.lang.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 loggingloglevel- The level to log at (DEBUG, WARN, etc)s- The log message
-
print
public static void print(int loglevel, java.lang.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(java.lang.Object o, int loglevel, java.util.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 loggingloglevel- The level to log at (DEBUG, WARN, etc)m- The Map to print out
-
printMap
public static void printMap(java.lang.Class c, int loglevel, java.util.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 loggingloglevel- The level to log at (DEBUG, WARN, etc)m- The Map to print out
-
printMap
public static void printMap(java.util.Map m)
Log a Map at DEBUG log level- Parameters:
m- The Map to print out
-
printMap
public static void printMap(int loglevel, java.util.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(java.lang.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.
-
-