package org.yamcs;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Formatter;
import java.util.logging.LogRecord;
public class CompactFormatter extends Formatter {
SimpleDateFormat sdf=new SimpleDateFormat("MMM dd HH:mm:ss.SSS");
Date d=new Date();
@Override
public String format(LogRecord r) {
d.setTime(r.getMillis());
StringBuffer sb=new StringBuffer();
String name;
name=r.getLoggerName();
sb.append(sdf.format(d)).append(" [").append(r.getThreadID()).append("] ").append(name).append(" ").append(r.getSourceMethodName()).append(" ").append(r.getLevel()).append(":").append(r.getMessage());
Object[] params=r.getParameters();
if(params!=null) {
for(Object p:params) {
sb.append(p.toString());
}
}
Throwable t=r.getThrown();
if(t!=null) {
sb.append(": ").append(t.toString()).append("\n");
for(StackTraceElement ste:t.getStackTrace()) {
sb.append("\t").append(ste.toString()).append("\n");
}
Throwable cause=t.getCause();
while(cause!=null && cause!=t) {
sb.append("Caused by: ").append(cause.toString()).append("\n");
for(StackTraceElement ste:cause.getStackTrace()) {
sb.append("\t").append(ste.toString()).append("\n");
}
cause=cause.getCause();
}
}
sb.append("\n");
return sb.toString();
}
}