| 1 52 53 package com.go.trove.log; 54 55 import java.io.*; 56 57 68 public class Syslog { 69 private static final Log cLog; 70 private static final LogListener cSystemLogEventPrinter; 71 72 private static LogEventParsingOutputStream cSystemOut; 73 private static LogEventParsingOutputStream cSystemErr; 74 75 private static PrintStream cOriginalOut; 76 private static PrintStream cOriginalErr; 77 private static boolean cInstalled; 78 79 static { 80 cLog = new Log(null, null); 81 cLog.setDescription("System Log"); 82 83 cSystemLogEventPrinter = new LogListener() { 84 public void logMessage(LogEvent e) { 85 PrintStream ps = getPrintStream(e); 86 String message = e.getMessage(); 87 if (message == null) { 88 ps.println(); 89 } 90 else { 91 ps.println(message); 92 } 93 } 94 95 public void logException(LogEvent e) { 96 Throwable t = e.getException(); 97 if (t == null) { 98 logMessage(e); 99 } 100 else { 101 t.printStackTrace(getPrintStream(e)); 102 } 103 } 104 105 private PrintStream getPrintStream(LogEvent e) { 106 synchronized (log()) { 107 switch (e.getType()) { 108 case LogEvent.DEBUG_TYPE: 109 case LogEvent.INFO_TYPE: 110 return (cInstalled) ? cOriginalOut : System.out; 111 } 112 113 return (cInstalled) ? cOriginalErr : System.err; 114 } 115 } 116 }; 117 118 log().addLogListener(cSystemLogEventPrinter); 119 } 120 121 128 public static Log log() { 129 return cLog; 130 } 131 132 137 public static LogListener getSystemLogEventPrinter() { 138 return cSystemLogEventPrinter; 139 } 140 141 145 public static void install() { 146 synchronized (log()) { 147 if (!cInstalled) { 148 cInstalled = true; 149 cOriginalOut = System.out; 150 cOriginalErr = System.err; 151 152 cSystemOut = new LogEventParsingOutputStream 153 (log(), LogEvent.INFO_TYPE) 154 { 155 public boolean isEnabled() { 156 return log().isInfoEnabled(); 157 } 158 }; 159 cSystemOut.addLogListener(log()); 160 System.setOut(new PrintStream(cSystemOut, true)); 161 162 cSystemErr = new LogEventParsingOutputStream 163 (log(), LogEvent.ERROR_TYPE) 164 { 165 public boolean isEnabled() { 166 return log().isErrorEnabled(); 167 } 168 }; 169 cSystemErr.addLogListener(log()); 170 System.setErr(new PrintStream(cSystemErr, true)); 171 } 172 } 173 } 174 175 178 public static void uninstall() { 179 synchronized (log()) { 180 if (cInstalled) { 181 cInstalled = false; 182 System.setOut(cOriginalOut); 183 System.setErr(cOriginalErr); 184 cOriginalOut = null; 185 cOriginalErr = null; 186 cSystemOut = null; 187 cSystemErr = null; 188 } 189 } 190 } 191 192 195 public static void debug(String s) { 196 log().debug(s); 197 } 198 199 202 public static void debug(Throwable t) { 203 log().debug(t); 204 } 205 206 209 public static void info(String s) { 210 log().info(s); 211 } 212 213 216 public static void info(Throwable t) { 217 log().info(t); 218 } 219 220 223 public static void warn(String s) { 224 log().warn(s); 225 } 226 227 230 public static void warn(Throwable t) { 231 log().warn(t); 232 } 233 234 237 public static void error(String s) { 238 log().error(s); 239 } 240 241 244 public static void error(Throwable t) { 245 log().error(t); 246 } 247 248 private Syslog() { 249 } 250 } 251 | Popular Tags |