/*
* Copyright (c) 2004, 2005, 2006 TADA AB - Taby Sweden
* Distributed under the terms shown in the file COPYRIGHT
* found in the root folder of this project or at
* http://eng.tada.se/osprojects/COPYRIGHT.html
*/
package org.postgresql.pljava.internal;
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 default formatter for the ELogHandler.
*
* @author Thomas Hallgren
*/
public class ELogFormatter extends Formatter
{
private final static MessageFormat s_tsFormatter = new MessageFormat(
"{0,date,dd MMM yy} {0,time,HH:mm:ss} {1} {2}");
private final static String s_lineSeparator = System.getProperty("line.separator");
private final Date m_timestamp = new Date();
private final Object m_args[] = new Object[] { m_timestamp, null, null };
private final StringBuffer m_buffer = new StringBuffer();
/**
* Format the given LogRecord.
* @param record the log record to be formatted.
* @return a formatted log record
*/
public synchronized String format(LogRecord record)
{
StringBuffer sb = m_buffer;
sb.setLength(0);
m_timestamp.setTime(record.getMillis());
String tmp = record.getSourceClassName();
m_args[1] = (tmp == null) ? record.getLoggerName() : tmp;
m_args[2] = this.formatMessage(record);
s_tsFormatter.format(m_args, sb, null);
Throwable thrown = record.getThrown();
if(thrown != null)
{
sb.append(s_lineSeparator);
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
record.getThrown().printStackTrace(pw);
pw.close();
sb.append(sw.toString());
}
return sb.toString();
}
}