package ilarkesto.logging;
import ilarkesto.base.Str;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.logging.Formatter;
import java.util.logging.Handler;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
public class JavaLoggingFormatter extends Formatter {
private static final int LOGGER_WIDTH = 30;
@Override
public String format(LogRecord record) {
StringBuilder sb = new StringBuilder();
sb.append(Str.fillUpRight(Str.cutRight(record.getLevel().getName(), 4), " ", 5));
sb.append(Str.fillUpRight(Str.cutLeft(record.getLoggerName(), LOGGER_WIDTH - 1, ".."), " ", LOGGER_WIDTH));
sb.append("-> ");
sb.append(record.getMessage());
sb.append("\n");
if (record.getThrown() != null) {
StringWriter sw = new StringWriter();
PrintWriter out = new PrintWriter(sw);
record.getThrown().printStackTrace(out);
out.flush();
sb.append(sw.toString());
}
return sb.toString();
}
public static final JavaLoggingFormatter INSTANCE = new JavaLoggingFormatter();
public static void install() {
Handler[] handler = Logger.getLogger("").getHandlers();
for (int i = 0; i < handler.length; i++) {
handler[i].setFormatter(INSTANCE);
}
}
}