Java logging APIで1行にログを出力させる
[web] Java Loggin API
[web] JavaでHello World ログ機能編
で、具体的な使い方については上のURLを参照していただくとして、ここでは1回のログ出力を1行にまとめるHanlderを掲載します。デフォルトのログフォーマットは複数行にわたって出力されることが多いのですが、これだとシェルでgrep検索をするときにちょっと面倒です。
そこで、Java Logging APIというページでも紹介されているFormatterを少し改善して、Java6でも使えるものを紹介します。
import java.util.logging.Formatter; final class MyFormatter extends Formatter {あとは、これを出力先のHandlerに与えればOKです。
private Calendar calendar = Calendar.getInstance();
public synchronized String format(LogRecord record) {
StringBuilder message = new StringBuilder(100);
calendar.setTimeInMillis(record.getMillis());
message.append(
String.format(
"%1$tD %1$tT %2$s ",
calendar,
record.getLevel().toString()));
if (null != record.getSourceClassName()) {
message.append(
record.getSourceClassName());
} else {
message.append(
record.getLoggerName());
}
message.append(' ');
if (null != record.getSourceMethodName()) {
message.append(
String.format(
"[%s]",
record.getSourceMethodName()));
}
message.append(' ');
message.append(formatMessage(record));
message.append('\n');
if (null != record.getThrown()) {
message.append(
record.getThrown());
}
return message.toString();
}
}
フォローしませんか?