package org.rsbot.log;
import org.rsbot.util.StringUtil;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Formatter;
import java.util.logging.LogRecord;
public class LogFormatter extends Formatter {
private static final String LINE_SEPARATOR = System.getProperty("line.separator");
private final boolean appendNewLine;
public LogFormatter() {
this(true);
}
public LogFormatter(final boolean appendNewLine) {
this.appendNewLine = appendNewLine;
}
@Override
public String format(final LogRecord record) {
final StringBuilder result = new StringBuilder().append("[").append(record.getLevel().getName()).append("] ").
append(new Date(record.getMillis())).append(": ").append(record.getLoggerName()).append(": ").
append(record.getMessage()).append(StringUtil.throwableToString(record.getThrown()));
if (appendNewLine) {
result.append(LogFormatter.LINE_SEPARATOR);
}
return result.toString();
}
@Override
public String formatMessage(final LogRecord record) {
return String.format(record.getMessage());
}
public String formatTimestamp(final LogRecord record) {
final SimpleDateFormat dateFormat = new SimpleDateFormat("hh:mm:ss");
return "[" + dateFormat.format(record.getMillis()) + "]";
}
public String formatClass(final LogRecord record) {
final String append = "...";
final String[] className = record.getLoggerName().split("\\.");
final String name = className[className.length - 1];
final int maxLen = 16;
return String.format(
name.length() > maxLen ? name.substring(0,
maxLen - append.length())
+ append : name);
}
public String formatError(final LogRecord record) {
return StringUtil.throwableToString(record.getThrown());
}
}