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字) |
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 で作成しました。
|