log5j
発想が面白いです
http://code.google.com/p/log5j/
getLoggerの引数にクラス名を指定しなくていい
(Log4j)
private static final Logger log = Logger.getLogger( FeedTask.class );
(Log5j)
private static final Logger log = Logger.getLogger();
コピペしたときにクラス名の指定を変更し忘れて(ry
sprintf形式のサポート
(Log4j)
log.debug( "This thing broke: " + foo + " due to bar: " + bar + " on this thing: " + car );
(Log5j)
log.debug( "This thing broke: %s due to bar: %s on this thing: %s", foo, bar, car );
前者に比べると後者の方は文字連結が無いから、if (log.isDebugEnabled()) { ... } を入れなくてもいいっていう利点がある。
もちろん、sprintfのパラメータに使う変数を文字連結する場合はifで囲まないといけないけど、それでも後者の方がパフォーマンスがいい。
String foo = "foo " + hoge;
log.debug("hello %", foo);