Oracle® Fusion Middleware Oracle WebLogic Server アプリケーション ロギングのロギング サービス ユーザーズ ガイド 11g リリース 1 (10.3.1) B55513-01 |
|
戻る |
以下の節では、Logger
クラスのリファレンス情報を提供します。
i18ngen
によって生成されるクラスは、Logger
と呼ばれています。Logger
クラスは、WebLogic Server ロギングのインタフェースを提供します。カタログ Xyz.xml
の場合、Logger
クラス XyzLogger
が生成されます。
Logger
クラスは、カタログに定義されたすべてのメッセージを WebLogic サーバ ログに記録するメソッドを提供します。組み込まれているメソッドは、関連するカタログで定義されたものと同じです。カタログで loggables
属性が true に指定されていると、メッセージごとに Loggable
メソッドが併せて生成されます。
詳細については、「B WebLogic Server 用の Loggable オブジェクトのリファレンス」を参照してください。
生成された Logger クラスの例をコード リスト D-1 に示します。
コード リスト D-1 生成された Logger クラスの例
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE message_catalog PUBLIC "weblogic-message-catalog-dtd" "http://www.bea.com/servers/wls90/dtd/msgcat.dtd"> <message_catalog i18n_package="examples.i18n.logging" l10n_package="examples.i18n.logging" subsystem="I18N" version="1.0" baseid="600000" endid="610000" loggables="true" > <logmessage messageid="600000" method="logEntry()" severity="info" > <messagebody>Starting I18nLog example...</messagebody> <messagedetail></messagedetail> <cause></cause> <action></action> </logmessage> <logmessage messageid="600001" method="testArgs(String name,int cnt)" severity="debug" > <messagebody>Class {0} started with {1,number} arguments.</messagebody> <messagedetail></messagedetail> <cause></cause> <action></action> </logmessage> <logmessage messageid="600002" method="logTrace(Throwable t)" severity="error" stacktrace="true" > <messagebody>This message is followed by a trace</messagebody> <messagedetail></messagedetail> <cause></cause> <action></action> </logmessage> <logmessage messageid="600003" method="logNoTrace(Throwable t)" severity="warning" stacktrace="false" > <messagebody>This message is not followed by a trace, but we can insert its text : {0}</messagebody> <messagedetail></messagedetail> <cause></cause> <action></action> </logmessage> <logmessage messageid="600004" method="getId()" severity="info" > <messagebody>This message's id will be in the next message</messagebody> <messagedetail>A message can contain additional detailed information.</messagedetail> <cause>This message is displayed on purpose</cause> <action>Nothing to do, the example is working</action> </logmessage> <logmessage messageid="600005" method="showId(String id)" severity="info" > <messagebody>The previous message logged had message id {0}</messagebody> <messagedetail></messagedetail> <cause></cause> <action></action> </logmessage> </message_catalog>
コード リスト D-2 は、weblogic.i18ngen
が生成した、これに対応する Java ソース コードを示しています。
コード リスト D-2 生成された Logger クラスの例
package examples.i18n.logging; import weblogic.logging.MessageLogger; import weblogic.logging.Loggable; import java.util.MissingResourceException; public class I18nLogLogger { /** * I18nLog サンプルの開始 * @exclude * * messageid: 600000 * severity: info */ public static String logEntry() { Object [] args = { }; MessageLogger.log( "600000", args, "examples.i18n.logging.I18nLogLogLocalizer"); return "600000"; } public static Loggable logEntryLoggable() throws MissingResourceException { Object[] args = { }; return new Loggable("600000", args); } /** * クラス {0} が {1,number} 個の引数で起動する。 * @exclude * * messageid: 600001 * severity: debug */ public static String testArgs(String arg0, int arg1) { Object [] args = { arg0, new Integer(arg1) }; MessageLogger.log( "600001", args, "examples.i18n.logging.I18nLogLogLocalizer"); return "600001"; } public static Loggable testArgsLoggable(String arg0, int arg1) throws MissingResourceException { Object[] args = { arg0, new Integer(arg1) }; return new Loggable("600001", args); } /** * このメッセージの後にトレースが続く * @exclude * * messageid: 600002 * severity: error */ public static String logTrace(Throwable arg0) { Object [] args = { arg0 }; MessageLogger.log( "600002", args, "examples.i18n.logging.I18nLogLogLocalizer"); return "600002"; } public static Loggable logTraceLoggable(Throwable arg0) throws MissingResourceException { Object[] args = { arg0 }; return new Loggable("600002", args); } /** * このメッセージの後にトレースは続かないが、テキストを挿入できる : {0} * @exclude * * messageid: 600003 * severity: warning */ public static String logNoTrace(Throwable arg0) { Object [] args = { arg0 }; MessageLogger.log( "600003", args, "examples.i18n.logging.I18nLogLogLocalizer"); return "600003"; } public static Loggable logNoTraceLoggable(Throwable arg0) throws MissingResourceException { Object[] args = { arg0 }; return new Loggable("600003", args); } /** * このメッセージの ID は次のメッセージに含まれる * @exclude * * messageid: 600004 * severity: info */ public static String getId() { Object [] args = { }; MessageLogger.log( "600004", args, "examples.i18n.logging.I18nLogLogLocalizer"); return "600004"; } public static Loggable getIdLoggable() throws MissingResourceException { Object[] args = { }; return new Loggable("600004", args); } /** * 以前にログに書き込まれたメッセージのメッセージ ID {0} * @exclude * * messageid: 600005 * severity: info */ public static String showId(String arg0) { Object [] args = { arg0 }; MessageLogger.log( "600005", args, "examples.i18n.logging.I18nLogLogLocalizer"); return "600005"; } public static Loggable showIdLoggable(String arg0) throws MissingResourceException { Object[] args = { arg0 }; return new Loggable("600005", args); } }
コード リスト D-3 は、weblogic.i18nLog
(インターナショナライズ (I18n) ロギング インタフェース) を使用するサンプル アプリケーションを示しています。この例では、通知メッセージがログとして記録されます。
コード リスト D-3 i18nLog を使用するアプリケーション例
package examples.i18n.logging; import java.util.Locale; import weblogic.i18n.Localizer; import weblogic.i18ntools.L10nLookup; import weblogic.logging.Loggable; /** * この例では、インターナショナライズ (I18n) ロギング インタフェースの使用法を示す * <p> * 使い方 : java examples.i18n.logging.I18nLog * <p> * ビルド プロシージャ : bld.sh (UNIX) または bld.cmd (NT) を実行。このスクリプトにより、 * I18nLog.xml カタログが処理され、ロギング クラス <tt>examples.i18n.logging.I18nLogLogger</tt> * が生成される。このクラスには、 * WLS サーバ ログにメッセージを記録する静的メソッドが含まれる。このメソッドと * 引数は、I18nLog.xml カタログに定義されている。この例では、 * シンプル メッセージ カタログ、I18nSimple.xml も使用している */ public class I18nLog { public I18nLog() {} public static void main(String[] argv) { /** * この呼び出しでは、info メッセージがログに書き込まれるだけである。このメソッドには、 * 引数は定義されていない。 * * ここでは、メソッドの Loggable 形式の使用方法も示している。 */ Loggable ll = I18nLogLogger.logEntryLoggable(); ll.log(); System.out.println(ll.getMessage()); /** * ここに示すのは、さまざまな引数を含むメッセージのサンプル * である。 */ I18nLogLogger.testArgs(I18nLog.class.getName(),argv.length); /** * Throwable が渡された場合は、デフォルトで、メソッドと共に * スタックトレースがログに書き込まれる。 */ Throwable t = new Throwable("Test with stack trace"); I18nLogLogger.logTrace(t); /** * スタック トレースをログ記録しないようにメッセージを定義することもできる。 */ I18nLogLogger.logNoTrace(t); /** * logger メソッドは、これらのメッセージのログだけではなく他の処理も * 行うアプリケーションのメッセージ ID を返す。 */ String messageId = I18nLogLogger.getId(); I18nLogLogger.showId(messageId); /** * メッセージ ID は、メッセージのさまざまな属性の入手に使用 * できる。L10nLookup オブジェクトにより、Localizer クラスを通じて * カタログにアクセスできる。Localizer により、個々のメッセージにアクセス * できる。各ログ メッセージ カタログには、一般メッセージ情報用 * と詳細属性用の 2 つの Localizer が入っている。 * * 基本 Localizer によって、以下のカタログ情報にアクセスする * Version * L10n Package - カタログ データ用パッケージ * I18n Package - Logger メソッド用パッケージ * Subsystem - カタログ サブシステム * また、メッセージごとに以下の情報を提供する * Severity: debug, info, warning, error * Message Body - メッセージ テキスト * スタック トレースをログに記録するかどうかの選択 * * まず、L10nLookup プロパティを取得し、プロパティを使用して、 * メッセージに対する Localizer の内容を入手する。 */ L10nLookup l10n = L10nLookup.getL10n(); /** * 以下のコードは、基本 Localizer (arg 3 = false) を返す */ Localizer lcl = l10n.getLocalizer(messageId,Locale.getDefault(),false); /** * 以下のコードは、詳細 Localizer (arg 3 = true) を返す */ Localizer lclDetail = l10n.getLocalizer(messageId,Locale.getDefault(),true); /** * このアプリケーションのシンプル メッセージ カタログは、ログ メッセージ * カタログ情報の表示に使用する */ I18nSimpleTextFormatter fmt = new I18nSimpleTextFormatter(); System.out.println(fmt.version(messageId,lcl.getVersion())); System.out.println(fmt.l10nPackage(messageId,lcl.getL10nPackage())); System.out.println(fmt.i18nPackage(messageId,lcl.getI18nPackage())); System.out.println(fmt.subsystem(messageId,lcl.getSubSystem())); System.out.println(fmt.severity(messageId,lcl.getSeverity(messageId))); System.out.println(fmt.body(messageId,lcl.getBody(messageId))); System.out.println(fmt.stack(messageId,lcl.getStackTrace(messageId))); /** * 次は詳細情報 */ System.out.println(fmt.detail(messageId,lclDetail.getDetail(messageId))); System.out.println(fmt.cause(messageId,lclDetail.getCause(messageId))); System.out.println(fmt.action(messageId,lclDetail.getAction(messageId))); } }