Seasar DI Container with AOP

Loggerクラス

S2Containerの中にはlog4jをラップした便利なLoggerクラスがあります。

目次


主要クラス

  • org.seasar.framework.log.Logger
  • Commons Loggingをラップしたクラス(Log4jはCommons Loggingで設定)
    内部的には次のMessageFormatterを利用している
  • org.seasar.framework.message.MessageFormatter
  • java.text.MessageFormatと
    (S2.3)java.util.ResourceBundle
    (S2.4)org.seasar.framework.message.MessageResourceBundleを内部で利用している
    以下はSMART deploy対応のメッセージバンドルを定義しているクラス
  • org.seasar.framework.message.MessageResourceBundle
  • org.seasar.framework.message.MessageResourceBundleFacade
  • org.seasar.framework.message.MessageResourceBundleFactory

プロパティファイル

Loggerの出力メッセージを定義するファイルです。

  • XXXMessages.properties
  • 「XXX」がシステム名になる。
  • XXXMessages_ja.properties
  • 日本語対応する場合は、ロケールに合わせたプロパティファイルを用意する。

例:SSRMessages.properties

以下はS2Containerで使用しているメッセージ用プロパティファイルです。

ESSR0001={0} not found
ESSR0002=<{0}> expected:<{1}> but actual:<{2}>
ESSR0003=<{0}> unexpected:<{1}>
ESSR0004={0} not found from {1}
ESSR0007={0} should not be null or empty

メッセージの命名規約

メッセージ[ ESSR0001={0} not found ]は次の規則に沿って作られています。

メッセージ種別(1字) + システム名 + 連番(4桁) = メッセージ内容

メッセージ種別

メッセージの頭1文字はそのメッセージの種別を表しています。

メッセージ種別表記(1字)
FATALF
ERRORE
WARNW
INFOI
DEBUGD

log()メソッド

org.seasar.framework.log.Loggerのlog()メソッドは2種類あります。

  • public final void log(String messageCode, Object[] args)
  • 内部的には次のlog()メソッドの第3引き数をnullにして呼び出す
  • public final void log(String messageCode, Object[] args, Throwable throwable)
  • 3つの引数を持つlog()メソッドは、内部でメッセージコードからメッセージ種別を判別し、対応するCommons Loggingのメソッド
    (debug, info, warn, error, fatal)を呼び出します。

log()メソッドの使用例

org.seasar.framework.log.Logger.getLogger()メソッドでLoggerクラスのインスタンスを取得します。

    logger.log("DRMI0001", new Object[] { Integer.toString(this.registryPort) });

実際に表示される内容は以下の通り。

DEBUG 2005-06-01 00:44:49,616 [main] RMIレジストリをポート 1108 で作成しました。