JavaのLogging APIのクラスの分類

分類しようと思ったきっかけ

今現在、仕事で作成しているJavaのプログラムでログを出力したいと思っていおります。
Javaでログ出力をする手段としてLogging APILog4JJakarta commons-logging、SLF4J(Simple Logging Facade for Java)等、複数の候補があるようですが、どれも使用したことがありません。
まずは、Java SE APIに含まれていて、単純だと聞いたことのある、Logging APIを使ってみることにしました。

今日やったこと

手始めに、Java Platform, Standard Edition 6 API 仕様のjava.util.loggingパッケージの中身を見てみました。
http://java.sun.com/javase/ja/6/docs/ja/api/java/util/logging/package-summary.html
インタフェースが2個に、クラスが15個あります。
クラスが15個もあり、パッと見なんだかよくわからないので、クラスの分類を行ってみました。
分類の基準は、クラス名の末尾の単語です。

java.util.loggingパッケージのクラス分類表

分類 クラス名 概要
Logger Logger ロガー
Formatter Formatter フォーマッタ
XMLFormatter XML形式のフォーマッタ
SimpleFormatter 簡単なフォーマッタ
Handler Handler ログ出力
ConsoleHandler 標準エラーへのログ出力
FileHandler ファイルへのログ出力
MemoryHandler メモリへのログ出力
SocketHandler ネットワークへのログ出力
StreamHandler ストリームへのログ出力
Level Level ロギングレベル
Manager ErrorManager Handlerで発生するエラーの管理
LogManager ロガーの名前空間の階層構造とログ制御用プロパティの管理
Permission LoggingPermission ロギングのアクセス権
Record LogRecord LoggerからHandlerに渡されるログメッセージ

余談ですが、分類しながら思ったこと

最初からこれぐらいの細かさでパッケージが分かれていると、わざわざ分類の手間が省けるのですが。
あまり細かく分けるのもどうかと思いますし、どういうパッケージ分けがよいか、まだ結論は出ていないです。

大事そうな分類

Logger

アプリケーションからログをはく場合には、Loggerオブジェクトを使用すればよいようです。

Formatter

ログの書式を決められるようです。
個人的には、grepしやすいフォーマットがよいですが、SimpleFormatterで用が足りるのでしょうか?

Handler

Handlerにより、さまざまな出力先へのログ出力が行えるようです。
DBに書き込むようなHandlerの実装もきっとできるのでしょうね。

さいごに

とりあえず、Loggerへの呼び出しコードをプログラム内に書いておけば、他のものは切り替えが効きそうな予感です(ざっくり)。
というわけで、明日は早速、Logging APIを使用して、ログ出力を試してみようと思います。