package com.twitter.common.logging;
import java.util.logging.Formatter;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import com.google.common.collect.ImmutableMap;
/**
* Log formatter to match the format generated by glog.
*
* @see Glog
*/
public class LogFormatter extends Formatter implements Glog.Formatter<LogRecord> {
private static final ImmutableMap<Level, Glog.Level> LEVEL_LABELS =
ImmutableMap.<Level, Glog.Level>builder()
.put(Level.FINEST, Glog.Level.DEBUG)
.put(Level.FINER, Glog.Level.DEBUG)
.put(Level.FINE, Glog.Level.DEBUG)
.put(Level.CONFIG, Glog.Level.INFO)
.put(Level.INFO, Glog.Level.INFO)
.put(Level.WARNING, Glog.Level.WARNING)
.put(Level.SEVERE, Glog.Level.ERROR)
.build();
@Override
public String format(final LogRecord record) {
return Glog.formatRecord(this, record);
}
@Override
public String getMessage(LogRecord record) {
return formatMessage(record);
}
@Override
public String getClassName(LogRecord record) {
return record.getSourceClassName();
}
@Override
public String getMethodName(LogRecord record) {
return record.getSourceMethodName();
}
@Override
public Glog.Level getLevel(LogRecord record) {
return LEVEL_LABELS.get(record.getLevel());
}
@Override
public long getTimeStamp(LogRecord record) {
return record.getMillis();
}
@Override
public long getThreadId(LogRecord record) {
return record.getThreadID();
}
@Override
public Throwable getThrowable(LogRecord record) {
return record.getThrown();
}
}