ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server アプリケーション ロギングのロギング サービス ユーザーズ ガイド
11g リリース 1 (10.3.1)
B55513-01
 

目次
目次

戻る
戻る
 
 

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

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

Logger クラスの概要

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

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

詳細については、「B 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>
 * ビルド プロシージャ : 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)));

    }
}