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(); } }