package fitnesse.logging;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.logging.Formatter;
import java.util.logging.Level;
import java.util.logging.LogRecord;
/**
* Java logging formatter.
*/
public class LogFormatter extends Formatter {
private static final String ENDL = System.getProperty("line.separator");
public LogFormatter() {
super();
}
@Override
public String format(LogRecord logRecord) {
StringBuilder builder = new StringBuilder(128);
Throwable thrown = logRecord.getThrown();
if (atLeastWarningLevel(logRecord)) {
builder.append(logRecord.getLevel().getName())
.append(": ");
}
builder.append(logRecord.getMessage());
if (thrown != null) {
builder.append(" [")
.append(thrown.getMessage())
.append("]");
}
builder.append(ENDL);
if (thrown != null && atLeastWarningLevel(logRecord)) {
StringWriter writer = new StringWriter();
thrown.printStackTrace(new PrintWriter(writer));
builder.append(writer.toString());
}
return builder.toString();
}
private boolean atLeastWarningLevel(LogRecord logRecord) {
return logRecord.getLevel().intValue() > Level.INFO.intValue();
}
}