1 // Copyright 2002 Adam Megacz, see the COPYING file for licensing [LGPL]
5 /** easy to use logger */
8 public static boolean on = true;
9 public static boolean verbose = false;
11 /** true iff nothing has yet been logged */
12 public static boolean firstMessage = true;
14 /** message can be a String or a Throwable */
15 public static synchronized void log(Object o, Object message) {
19 System.err.println("===========================================================================");
20 log(Log.class, "Logging enabled at " + new java.util.Date());
24 if (o instanceof Class) classname = ((Class)o).getName();
25 else if (o instanceof String) classname = (String)o;
26 else classname = o.getClass().getName();
28 if (classname.indexOf('.') != -1) classname = classname.substring(classname.lastIndexOf('.') + 1);
29 if (classname.length() > 20) classname = classname.substring(0, 20);
30 while (classname.length() < 20) classname = " " + classname;
31 classname = classname + ": ";
33 if (!(message instanceof Throwable)) System.err.println(classname + message);
35 ByteArrayOutputStream baos = new ByteArrayOutputStream();
36 ((Throwable)message).printStackTrace(new PrintStream(baos));
37 byte[] b = baos.toByteArray();
38 BufferedReader br = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(b)));
41 while((s = br.readLine()) != null) {
42 System.err.print(classname);
43 for(int i=0; i<s.length(); i++)
44 System.err.print(s.charAt(i) == '\t' ? " " : ("" + s.charAt(i)));
47 } catch (Exception e) { }