package com.ibm.nmon.util; import java.util.logging.Formatter; import java.util.logging.LogRecord; import java.io.PrintWriter; import java.io.StringWriter; import java.text.SimpleDateFormat; import com.ibm.nmon.gui.Styles; /** * Custom {@link java.util.logging.Formatter Formatter} that displays basic information and stack * trace output. * * @see com.ibm.nmon.gui.util.LogViewerDialog LogViewerDialog * @see ParserLog */ public final class BasicFormatter extends Formatter { private final SimpleDateFormat format = new SimpleDateFormat(Styles.DATE_FORMAT_STRING_SHORT); @Override public String format(LogRecord record) { StringWriter buffer = new StringWriter(256); buffer.append(format.format(record.getMillis())); buffer.append(" "); buffer.append(record.getLevel().getName()); buffer.append(" "); buffer.append(record.getSourceClassName()); buffer.append("."); buffer.append(record.getSourceMethodName()); buffer.append(": "); buffer.append(record.getMessage()); buffer.append("\n"); if (record.getThrown() != null) { PrintWriter pw = new PrintWriter(buffer); record.getThrown().printStackTrace(pw); pw.close(); } // else nothing since StringWriter.close() is a no-op return buffer.toString(); } }