package net.minecraft.src;

import java.util.logging.Formatter;
import java.util.logging.Level;
import java.util.logging.LogRecord;

import java.io.PrintWriter;
import java.io.StringWriter;

public class PC_LogFormatter extends Formatter {

	static final String nl = System.getProperty("line.separator");

	public String format(LogRecord record) {

		StringBuffer buf = new StringBuffer(180);


		Level level = record.getLevel();
		String trail = "";
		if(level == Level.CONFIG) trail="CONFIG: ";
		if(level == Level.FINE) trail="";
		if(level == Level.FINER) trail="\t";
		if(level == Level.FINEST) trail="\t\t";
		if(level == Level.INFO) trail="INFO: ";
		if(level == Level.SEVERE) trail="SEVERE: ";
		if(level == Level.WARNING) trail="WARNING: ";

		buf.append(formatMessage(record));

		buf.append(nl);

		Throwable throwable = record.getThrown();
		if (throwable != null) {
			
			buf.append("at ");
			buf.append(record.getSourceClassName());
			buf.append('.');
			buf.append(record.getSourceMethodName());
			buf.append(nl);
			
			StringWriter sink = new StringWriter();
			throwable.printStackTrace(new PrintWriter(sink, true));
			buf.append(sink.toString());

			buf.append(nl);
		}

		return buf.toString();
	}
}
