package com.github.sdbg.debug.core.internal.forwarder;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.text.MessageFormat;
import java.util.Date;
import java.util.logging.Formatter;
import java.util.logging.LogRecord;
public class ShellFormatter extends Formatter {
private String lineSeparator = System.getProperty("line.separator");
private String prefix;
private Date date = new Date();
private Object args[] = new Object[1];
private MessageFormat formatter;
public ShellFormatter() {
this(null);
}
public ShellFormatter(String prefix) {
this.prefix = prefix;
}
@Override
public synchronized String format(LogRecord record) {
StringBuffer sb = new StringBuffer();
if (prefix != null) {
sb.append(prefix);
}
// Minimize memory allocations here.
date.setTime(record.getMillis());
args[0] = date;
if (formatter == null) {
formatter = new MessageFormat("{0,time,short}");
}
formatter.format(args, sb, null);
sb.append(": ");
String message = formatMessage(record);
sb.append(message);
sb.append(lineSeparator);
if (record.getThrown() != null) {
try {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
record.getThrown().printStackTrace(pw);
pw.close();
sb.append(sw.toString());
} catch (Exception ex) {
}
}
return sb.toString();
}
}