01: //Portions Copyright 2001, Philip Johnson. See LicenseInfo.html for details.
02: package csdl.stackmvc.util;
03:
04: import java.util.Date;
05: import java.text.SimpleDateFormat;
06:
07: /**
08: * Simple Debug class that allows command line enabling of debugging by
09: * setting -D properties. For example,
10: * <pre>
11: * java -DDebug.StackMVC ...
12: * </pre>
13: * will enable the printing of all debug messages with the StackMVC key.
14: * To enable all debugging without listing every class, use:
15: * <pre>
16: * java -DDebug.all ...
17: * </pre>
18: * <p>
19: * Note that this class is obsolete in Java 1.4. There you should use the logging utility.
20: * @author Original code by Ian Darwin (Java Cookbook).
21: * @author Philip Johnson (timestamp and other enhancements.)
22: * @version $Id: Debug.java,v 1.2 2003/01/25 01:49:02 jagustin Exp $
23: */
24: public class Debug {
25: /** Format for timestamp. */
26: private static SimpleDateFormat shortTimeFormat = new SimpleDateFormat(
27: "MM/dd HH:mm:ss");
28:
29: /** Enable all log messages. */
30: public static final String ALL = "Debug.all";
31:
32: /** Enable log messages for a specific class. */
33: public static final String STACKMVC = "Debug.StackMVC";
34:
35: /**
36: * Checks to see if the given category (of debugging) is enabled.
37: * Enabled by settings. E.g: -DDebug.Stack to debug Stack operations.
38: * @param category The debugging category.
39: * @return Whether or not this category is enabled.
40: */
41: public static boolean isEnabled(String category) {
42: return (System.getProperty(category) != null || System
43: .getProperty(ALL) != null);
44: }
45:
46: /**
47: * Println the message if that message's category
48: * is enabled for debugging.
49: * @param category The debugging category.
50: * @param msg The message to be printed if this category is enabled.
51: */
52: public static void println(String category, String msg) {
53: if (isEnabled(category)) {
54: System.out.println(shortTimeFormat.format(new Date()) + " "
55: + msg);
56: }
57: }
58:
59: /**
60: * Println the message if that message's category
61: * is enabled for debugging.
62: * This is used for non-String objects.
63: * @param category The debugging category.
64: * @param stuff The object whose toString() method will be called to print.
65: */
66: public static void println(String category, Object stuff) {
67: if (isEnabled(category)) {
68: println(category, stuff.toString());
69: }
70: }
71: }
|