| 
 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.MessageResourceBundleorg.seasar.framework.message.MessageResourceBundleFacadeorg.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字) | 
|---|
 | FATAL | F |  | ERROR | E |  | WARN | W |  | INFO | I |  | DEBUG | D |  
 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)を呼び出します。 
 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 で作成しました。
 |