Wrote a log formatter for the built-in Java logging that formats things

more readably and concisely.


git-svn-id: https://samskivert.googlecode.com/svn/trunk@1548 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
mdb
2004-12-14 22:04:27 +00:00
parent 2086cc43cb
commit 28d4dd8be3
@@ -0,0 +1,120 @@
//
// samskivert library - useful routines for java programs
// Copyright (C) 2001-2004 Michael Bayne
//
// This library is free software; you can redistribute it and/or modify it
// under the terms of the GNU Lesser General Public License as published
// by the Free Software Foundation; either version 2.1 of the License, or
// (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
package com.samskivert.util;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Date;
import java.text.FieldPosition;
import java.text.SimpleDateFormat;
import java.util.logging.Formatter;
import java.util.logging.Handler;
import java.util.logging.LogManager;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;
/**
* A briefer formatter than the default Java {@link SimpleFormatter}.
*/
public class OneLineLogFormatter extends Formatter
{
// documentation inherited
public String format (LogRecord record)
{
StringBuffer buf = new StringBuffer();
// append the timestamp
_date.setTime(record.getMillis());
_format.format(_date, buf, _fpos);
// append the log level
buf.append(" ");
buf.append(record.getLevel().getLocalizedName());
// append the log method call context
buf.append(" ");
String where = record.getSourceClassName();
boolean legacy = (where.indexOf("LoggingLogProvider") != -1);
if (where != null && !legacy) {
String logger = record.getLoggerName();
if (logger != null && where.startsWith(logger)) {
where = where.substring(logger.length()+1);
}
} else {
where = record.getLoggerName();
}
buf.append(where);
if (record.getSourceMethodName() != null && !legacy) {
buf.append(".");
buf.append(record.getSourceMethodName());
}
// append the message itself
buf.append(": ");
buf.append(formatMessage(record));
buf.append(LINE_SEPARATOR);
// if an exception was also provided, append that
if (record.getThrown() != null) {
try {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
record.getThrown().printStackTrace(pw);
pw.close();
buf.append(sw.toString());
} catch (Exception ex) {
}
}
return buf.toString();
}
/**
* Configures the default logging handler to use an instance of this
* formatter when formatting messages.
*/
public static void configureDefaultHandler ()
{
Logger logger = LogManager.getLogManager().getLogger("");
Handler[] handlers = logger.getHandlers();
OneLineLogFormatter formatter = new OneLineLogFormatter();
for (int ii = 0; ii < handlers.length; ii++) {
handlers[ii].setFormatter(formatter);
}
}
protected Date _date = new Date();
protected SimpleDateFormat _format =
new SimpleDateFormat("yyyy/MM/dd HH:mm:ss:SSS");
protected FieldPosition _fpos =
new FieldPosition(SimpleDateFormat.DATE_FIELD);
protected static String LINE_SEPARATOR = "\n";
protected static final String DATE_FORMAT = "{0,date} {0,time}";
static {
try {
LINE_SEPARATOR = System.getProperty("line.separator");
} catch (Exception e) {
}
}
}