org.mongodb.morphia.logging.jdk.ShortFormatter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of morphia Show documentation
Show all versions of morphia Show documentation
Java Object Document Mapper for MongoDB
The newest version!
package org.mongodb.morphia.logging.jdk;
import org.mongodb.morphia.logging.Logger;
import org.mongodb.morphia.logging.MorphiaLoggerFactory;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.text.MessageFormat;
import java.util.Date;
import java.util.logging.Formatter;
import java.util.logging.LogRecord;
/**
* A formatter providing a short format
*/
public class ShortFormatter extends Formatter {
private static final MessageFormat FORMAT = new MessageFormat("[{1}|{2}|{3,date,h:mm:ss}]{0} :{4}");
private static final Logger LOG = MorphiaLoggerFactory.get(ShortFormatter.class);
@Override
@SuppressWarnings("ThrowableResultOfMethodCallIgnored")
public String format(final LogRecord record) {
final StringBuilder sb = new StringBuilder();
String source = record.getSourceClassName() == null ? record.getLoggerName() : record.getSourceClassName();
source = source.substring(source.length() - 15) + "." + (record.getSourceMethodName() == null ? "" : record.getSourceMethodName());
final Object[] arguments = new Object[6];
arguments[0] = source;
arguments[1] = record.getLevel();
arguments[2] = Thread.currentThread().getName();
arguments[3] = new Date(record.getMillis());
arguments[4] = record.getMessage();
sb.append(FORMAT.format(arguments));
if (record.getThrown() != null) {
try {
final StringWriter sw = new StringWriter();
final PrintWriter pw = new PrintWriter(sw);
//CHECKSTYLE:OFF
record.getThrown().printStackTrace(pw);
//CHECKSTYLE:ON
pw.close();
sb.append(sw.toString());
} catch (Exception ex) {
LOG.error(ex.getMessage(), ex);
}
}
sb.append("\n");
return sb.toString();
}
}