Rev 3753 |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
/*
* Copyright (C) 2007 Steve Ratcliffe
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program 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 General Public License for more details.
*
*
* Author: Steve Ratcliffe
* Create date: 08-Sep-2007
*/
package uk.me.parabola.log;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Calendar;
import java.util.logging.Formatter;
import java.util.logging.Level;
import java.util.logging.LogRecord;
/**
* Prints the message all on one line, which amazingly is not the default
* behaviour in j.u.l, no wonder no one uses it.
*
* MUST be public whatever crazy static analyzers might say.
*
* @author Steve Ratcliffe
*/
public class UsefulFormatter
extends Formatter {
private boolean showTime =
true;
private static final String lineSeparator =
System.
getProperty("line.separator");
public String format
(LogRecord record
) {
StringBuffer sb =
new StringBuffer();
if (record.
getLevel().
intValue() <=
Level.
SEVERE.
intValue()) {
if (showTime
) {
long millis = record.
getMillis();
Calendar cal =
Calendar.
getInstance();
cal.
setTimeInMillis(millis
);
sb.
append(cal.
get(Calendar.
YEAR));
sb.
append('/');
sb.
append(fmt2
(cal.
get(Calendar.
MONTH)+
1));
sb.
append('/');
sb.
append(fmt2
(cal.
get(Calendar.
DAY_OF_MONTH)));
sb.
append(' ');
sb.
append(fmt2
(cal.
get(Calendar.
HOUR_OF_DAY)));
sb.
append(':');
sb.
append(fmt2
(cal.
get(Calendar.
MINUTE)));
sb.
append(':');
sb.
append(fmt2
(cal.
get(Calendar.
SECOND)));
sb.
append(' ');
}
sb.
append(record.
getLevel().
getLocalizedName());
sb.
append(" (");
sb.
append(shortName
(record.
getLoggerName()));
sb.
append("): ");
}
sb.
append(record.
getMessage());
sb.
append(lineSeparator
);
Throwable t = record.
getThrown();
if (t
!=
null) {
StringWriter out =
new StringWriter();
PrintWriter pw =
new PrintWriter(out
);
t.
printStackTrace(pw
);
sb.
append(out.
toString());
}
return sb.
toString();
}
public void setShowTime
(boolean showTime
) {
this.
showTime = showTime
;
}
private String fmt2
(int i
) {
StringBuffer res =
new StringBuffer(String.
valueOf(i
));
while (res.
length() < 2) {
res.
insert(0,
'0');
}
return res.
toString();
}
private String shortName
(String name
) {
int end = name.
lastIndexOf('.');
if (end
> 0) {
return name.
substring(end+
1);
} else
return name
;
}
}