public class Log {
public static boolean on = true;
- public static boolean color = true;
+ public static boolean color = false;
public static boolean verbose = false;
public static boolean logDates = false;
public static Date lastDate = null;
private static final int PURPLE = 35;
private static final int BROWN = 33;
private static final int GRAY = 37;
-
- private static String color(int color, boolean bright, String s) {
+
+ private static String colorize(int color, boolean bright, String s) {
if (!Log.color) return s;
return
- "" + ((char)27) + "[" + (bright?1:0) + ";" + color + "m" +
+ "\033[40;" + (bright?"1;":"") + color + "m" +
s +
- ((char)27) + "[0m";
+ "\033[0m";
}
private static String lastClassName = null;
private static synchronized void log(Object o, Object message, int level) {
if (firstMessage && !logDates) {
firstMessage = false;
- System.err.println(color(GREEN, false, "==========================================================================="));
- String incolor = color ? "in " +
- color(BLUE, true, "c") +
- color(RED, true, "o") +
- color(CYAN, true, "l") +
- color(GREEN, true, "o") +
- color(PURPLE, true, "r") + " " : "";
- diag(Log.class, "Logging enabled at " + new java.util.Date() + " " + incolor);
+ System.err.println(colorize(GREEN, false, "==========================================================================="));
+ diag(Log.class, "Logging enabled at " + new java.util.Date());
+ if (color) diag(Log.class, "logging messages in " +
+ colorize(BLUE, true, "c") +
+ colorize(RED, true, "o") +
+ colorize(CYAN, true, "l") +
+ colorize(GREEN, true, "o") +
+ colorize(PURPLE, true, "r"));
}
String classname;
if (classname.length() > (logDates ? 14 : 20)) classname = classname.substring(0, (logDates ? 14 : 20));
while (classname.length() < (logDates ? 14 : 20)) classname = " " + classname;
classname = classname + (classname.trim().length() == 0 ? " " : ": ");
- classname = color(GRAY, true, classname);
+ classname = colorize(GRAY, true, classname);
+ 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);
System.err.println();
- System.err.println(color(GRAY, false, "=== " + now + " =========================================================="));
+ System.err.println(colorize(GRAY, false, "=== " + now + " =========================================================="));
}
java.text.DateFormat df = new java.text.SimpleDateFormat("[EEE HH:mm:ss] ");
classname = df.format(d) + classname;
try {
String m = "";
while((s = br.readLine()) != null) m += s + "\n";
- log(o, m, level);
+ log(o, m.substring(0, m.length() - 1), level);
} catch (IOException e) {
- System.err.println(color(RED, true, "Logger: exception thrown by ByteArrayInputStream -- this should not happen"));
+ System.err.println(colorize(RED, true, "Logger: exception thrown by ByteArrayInputStream -- this should not happen"));
}
return;
}
while(str.indexOf('\t') != -1)
str = str.substring(0, str.indexOf('\t')) + " " + str.substring(str.indexOf('\t') + 1);
- classname = color(GRAY, false, classname);
+ classname = colorize(GRAY, false, classname);
int levelcolor = GRAY;
boolean bright = true;
switch (level) {
case DIAGNOSTIC: levelcolor = GREEN; bright = false; break;
case ECHO: levelcolor = BLUE; bright = true; break;
- case DEBUG: levelcolor = BLACK; bright = true; break;
+ case DEBUG: levelcolor = BROWN; bright = true; break;
case INFO: levelcolor = GRAY; bright = false; break;
case WARN: levelcolor = BROWN; bright = false; break;
case ERROR: levelcolor = RED; bright = true; break;
}
while(str.indexOf('\n') != -1) {
- System.err.println(classname + color(levelcolor, bright, str.substring(0, str.indexOf('\n'))));
+ System.err.println(classname + colorize(levelcolor, bright, str.substring(0, str.indexOf('\n'))));
classname = logDates ? " " : " ";
+ classname = colorize(GRAY,false,classname);
str = str.substring(str.indexOf('\n') + 1);
}
- System.err.println(classname + color(levelcolor, bright, str));
+ System.err.println(classname + colorize(levelcolor, bright, str));
}
public static void recursiveLog(String indent, String name, Object o) throws JSExn {