// You may not use this file except in compliance with the License.
package org.ibex.util;
-import java.io.*;
+
import java.util.*;
-import java.net.*;
-/** easy to use logger */
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+import java.io.PrintWriter;
+import java.io.FileOutputStream;
+import java.io.InputStreamReader;
+import java.io.IOException;
+import java.net.Socket;
+import java.net.InetAddress;
+import java.text.SimpleDateFormat;
+
+/** Easy to use logger.
+ *
+ * @author adam@ibex.org
+ */
public class Log {
+ private static final SimpleDateFormat formatDate = new SimpleDateFormat("EEE dd MMM yyyy");
+ private static final SimpleDateFormat formatTime = new SimpleDateFormat("[EEE HH:mm:ss] ");
+ private static final Hashtable threadAnnotations = new Hashtable();
public static boolean on = System.getProperty("ibex.log.on", "true").equals("true");
public static boolean color = System.getProperty("ibex.log.color", "true").equals("true");
public static boolean stackTraces = System.getProperty("ibex.log.stackTraces", "true").equals("true");
public static int maximumNoteLength = Integer.parseInt(System.getProperty("ibex.log.notes.maximumLength", (1024 * 32)+""));
public static boolean rpc = false;
- public static Date lastDate = null;
+ public static int lastDay = -1;
public static PrintStream logstream = System.err;
logstream = new PrintStream(new Socket(InetAddress.getByName(host), port).getOutputStream());
}
- private static Hashtable threadAnnotations = new Hashtable();
public static void setThreadAnnotation(String s) { threadAnnotations.put(Thread.currentThread(), s); }
/**
}
}
public static void clearnotes() { if (!notes) return; notebuf().setLength(0); }
- private static Hashtable notebufs = new Hashtable();
+
+ private static final Basket.Map notebufs = new Basket.HashMap();
public static StringBuffer notebuf() {
StringBuffer ret = (StringBuffer)notebufs.get(Thread.currentThread());
if (ret == null) {
classname = classname.replace('$', '.');
if (logDates) {
- Date d = new Date();
- if (lastDate == null || d.getYear() != lastDate.getYear() || d.getMonth() != lastDate.getMonth() || d.getDay() != lastDate.getDay()) {
- String now = new java.text.SimpleDateFormat("EEE dd MMM yyyy").format(d);
+ Calendar cal = Calendar.getInstance();
+ if (lastDay < 0 || lastDay != cal.get(Calendar.DAY_OF_YEAR)) {
+ lastDay = cal.get(Calendar.DAY_OF_YEAR);
+ String now = formatDate.format(cal.getTime());
logstream.println();
- logstream.println(colorize(GRAY, false, "=== " + now + " =========================================================="));
+ logstream.println(colorize(GREEN, false, "=== " + now + " =========================================================="));
}
- java.text.DateFormat df = new java.text.SimpleDateFormat("[EEE HH:mm:ss] ");
- classname = df.format(d) + classname;
- lastDate = d;
+ classname = formatTime.format(cal.getTime()) + classname;
}
String annot = (String)threadAnnotations.get(Thread.currentThread());