ロギングと言えば、The Apache Jakarta ProjectのCommons LoggingやLog4Jなどが有名です。
それらのロギングの概念は、クライアント側が出力するメッセージを決め、メッセージの出力レベルに合ったメソッドを呼び出すと言うものです。
以下にその実装例を示します。
Logger logger = Logger.getInstance(this.getClass()); logger.info("Information Level Message"); logger.error("Error Level Message");このロギングのインタフェースは、非常にシンプルで使いやすい事は分かります。 しかし、実際のエンタープライズなアプリケーションにおいて、運用・保守まで考えてロギングを行う場合、このようなインタフェースでは、以下のような問題が生じます。
Logger logger = (Logger)ServiceManagerFactory.getServiceObject("LogService"); logger.write("NIMBUS_0001"); logger.write("NIMBUS_0002");それらの付加情報は、別の場所で定義するのです。付加情報を外出しにする事で、メッセージの管理や、出力レベル・出力先の変更など、メッセージに付加される情報の変更が、アプリケーションに影響を及ぼさなくなります。
このパッケージでは、Loggerインタフェースを実装したサービスを提供します。