アプリケーション ロギングの WebLogic ロギング サービス ユーザーズ ガイド

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

WebLogic Server 用の Logger クラスのリファレンス

以下の節では、Logger クラスのリファレンス情報を提供します。

 


Logger クラスの概要

i18ngen によって生成されるクラスは、Logger と呼ばれています。Logger クラスは、WebLogic Server ロギングのインタフェースを提供します。カタログ Xyz.xml の場合、Logger クラス XyzLogger が生成されます。

Logger クラスは、カタログに定義されたすべてのメッセージを WebLogic サーバ ログに記録するメソッドを提供します。組み込まれているメソッドは、関連するカタログで定義されたものと同じです。カタログで loggables 属性が true に指定されていると、メッセージごとに Loggable メソッドが併せて生成されます。

詳細については、「WebLogic Server 用の Loggable オブジェクトのリファレンス」を参照してください。

 


生成された Logger クラスの例

生成された 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>
 * ビルド プロシージャ : run 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)));

}
}

ページの先頭       前  次