1 55 56 package org.apache.bsf.debug.util; 57 58 import java.security.*; 59 import java.io.OutputStream ; 60 import java.io.PrintStream ; 61 import java.lang.String ; 62 import java.lang.Integer ; 63 import java.util.Hashtable ; 64 65 public class DebugLog { 66 public static final int BSF_LOG_L0 = 0; 67 public static final int BSF_LOG_L1 = 1; 68 public static final int BSF_LOG_L2 = 2; 69 public static final int BSF_LOG_L3 = 3; 70 public static Hashtable logLevels; 71 72 private static int loglevel = 0; 73 private static PrintStream debugStream = System.err; 74 75 static { 76 Integer logprop = Integer.getInteger("org.apache.bsf.debug.logLevel", 0); 77 setLogLevel(logprop.intValue()); 78 79 logLevels = new Hashtable (); 80 logLevels.put("BSF_LOG_L0", new Integer (BSF_LOG_L0)); 81 logLevels.put("BSF_LOG_L1", new Integer (BSF_LOG_L1)); 82 logLevels.put("BSF_LOG_L2", new Integer (BSF_LOG_L2)); 83 logLevels.put("BSF_LOG_L3", new Integer (BSF_LOG_L3)); 84 } 85 86 public static void stdoutPrint(Object obj, int prio) { 87 streamPrint(obj, System.out, prio); 88 } 89 90 public static void stdoutPrintln(Object obj, int prio) { 91 streamPrintln(obj, System.out, prio); 92 } 93 94 public static void stderrPrint(Object obj, int prio) { 95 streamPrint(obj, System.err, prio); 96 } 97 98 public static void stderrPrintln(Object obj, int prio) { 99 streamPrintln(obj, System.err, prio); 100 } 101 102 public static void debugPrint(Object obj, int prio) { 103 streamPrint(obj, debugStream, prio); 104 } 105 106 public static void debugPrintln(Object obj, int prio) { 107 streamPrintln(obj, debugStream, prio); 108 } 109 110 public static void setDebugStream(PrintStream dbgStream) { 111 debugStream = dbgStream; 112 } 113 114 public static PrintStream getDebugStream() { 115 return debugStream; 116 } 117 118 public static void setLogLevel(int loglvl) { 119 if (loglvl != loglevel) { 120 if (loglvl >= 0) { 121 try { 122 final int loglvlf = loglvl; 123 AccessController.doPrivileged(new PrivilegedExceptionAction() { 124 public Object run() throws Exception { 125 System.setProperty("org.apache.bsf.debug.logLevel", String.valueOf(loglvlf)); 126 return null; 127 } 128 }); 129 loglevel = loglvlf; 130 } 131 catch (PrivilegedActionException prive) { 132 Exception e = prive.getException(); 133 System.err.println("Unable to set loglevel: " 134 + e.getMessage()); 135 e.printStackTrace(); 136 } 137 } 138 } 139 } 140 141 public static int getLogLevel() { 142 return loglevel; 143 } 144 145 public static void streamPrint(Object obj, 146 OutputStream ostrm, 147 int prio) { 148 if (loglevel >= prio) { 149 PrintStream prs = 150 (ostrm instanceof PrintStream ) ? (PrintStream ) ostrm 151 : new PrintStream (ostrm, true); 152 prs.print(obj); 153 } 154 } 155 156 public static void streamPrintln(Object obj, 157 OutputStream ostrm, 158 int prio) { 159 if (loglevel >= prio) { 160 PrintStream prs = 161 (ostrm instanceof PrintStream ) ? (PrintStream ) ostrm 162 : new PrintStream (ostrm, true); 163 prs.println(obj); 164 } 165 } 166 } 167 | Popular Tags |