package client.net.sf.saxon.ce.lib;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat;
import com.google.gwt.logging.impl.FormatterImpl;
import java.util.Date;
import java.util.logging.LogRecord;
/**
* Formats LogRecords into 2 lines of text.
*/
public class SaxonLogFormatter extends FormatterImpl {
private boolean showStackTraces;
private static DateTimeFormat dtf = DateTimeFormat.getFormat("HH:mm:ss.SSS");
public SaxonLogFormatter(boolean showStackTraces) {
this.showStackTraces = showStackTraces;
}
@Override
public String format(LogRecord event) {
StringBuilder message = new StringBuilder();
message.append(formatEvent(event));
message.append(event.getMessage());
if (showStackTraces) {
message.append(getStackTraceAsString(event.getThrown(), "\n", "\t"));
}
return message.toString();
}
private static String formatEvent(LogRecord event) {
// this required number of milliseconds since midnight
Date date = new Date(event.getMillis());
String timeString = dtf.format(date);
StringBuilder s = new StringBuilder();
s.append("SaxonCE.");
s.append(event.getLoggerName());
s.append(" ");
s.append(timeString);
s.append("\n");
s.append(event.getLevel().getName());
s.append(": ");
return s.toString();
}
}