Fusion Middleware Oracle WebLogic Serverアプリケーション・ロギングのためのロギング・サービスの使用

11g リリース1 (10.3.6)

B61615-04(原本部品番号:E13704-05)

目次

タイトルおよび著作権情報

はじめに

- ドキュメントのアクセシビリティについて

- 表記規則

1 概要とロードマップ

- ドキュメントのスコープと対象読者

- このドキュメントの手引き

- 関連ドキュメント

- ロギングのサンプルとチュートリアル

- Avitek Medical Recordsアプリケーション(MedRec)とチュートリアル

- WebLogic Server配布キットのロギング・サンプル

- シンプル・メッセージ・カタログのサンプルを使用したアプリケーションの国際化

- このリリースでの新機能と変更点

2 アプリケーション・ロギングおよびWebLogicロギング・サービス

- WebLogicロギング・サービスについて

- アプリケーション・ロギングとWebLogicロギング・サービスの統合:主な手順

- WebLogic Server Loggerへのアクセス

3 WebLogic Serverの国際化およびローカライゼーション

- 国際化およびローカライゼーションの標準規格

- WebLogic Serverの国際化およびローカライゼーションについて

- メッセージ・カタログ

- 国際化用Javaインタフェース

- 国際化されたメッセージを作成する主要な手順

4 WebLogic Serverでのメッセージ・カタログの使い方

- メッセージ・カタログの概要

- メッセージ・カタログの階層

- メッセージ・カタログの命名のガイドライン

- メッセージ引数の使い方

- メッセージ・カタログのフォーマット

- ログ・メッセージ・カタログの例

- ログ・メッセージ・カタログの要素

- message_catalog要素

- log_message要素

- log_message要素の子要素

- シンプル・テキスト・カタログの例

- シンプル・テキスト・カタログの要素

- message_catalog要素

- message要素

- messagebody要素

- ロケール固有のカタログの例

- ロケール固有のカタログの要素

- locale_message_catalog要素

- log_message要素

- その他のlocale_message_catalog要素

5 WebLogic Serverログへのメッセージの書込み

- I18Nメッセージ・カタログ・フレームワークの使い方:主な手順

- メッセージ・カタログの作成

- メッセージ・カタログのコンパイル

- コンパイルされたメッセージ・カタログからのメッセージの使用

- NonCatalogLogger APIの使用

- ServletContextの使用

- サーブレットとリソース・アダプタのロギングの構成

- クライアント・アプリケーションからのメッセージの書込み

- デバッグ・メッセージの書込み

6 WebLogic Serverメッセージ・エディタの使い方

- メッセージ・エディタの概要

- メッセージ・エディタの起動

- カタログに関する作業

- 既存のカタログの参照

- 新規カタログの作成

- カタログへのメッセージの追加

- 新規ログ・メッセージの入力

- 新規シンプル・テキスト・メッセージの入力

- メッセージの検索

- ログ・メッセージの検索

- シンプル・テキスト・メッセージの検索

- メッセージ・ビューアの使い方

- 1つのカタログ内の全メッセージの表示

- 複数のカタログ内の全メッセージの表示

- メッセージ・ビューアからの編集対象メッセージの選択

- 既存のメッセージの編集

- メッセージのリタイアとリタイア解除

7 WebLogic Server国際化ユーティリティの使い方

- WebLogic Server国際化ユーティリティ

- WebLogic Server国際化およびローカライゼーション

- weblogic.i18ngenユーティリティ

- 構文

- オプション

- weblogic.l10ngenユーティリティ

- 構文

- オプション

- メッセージ・カタログのローカライゼーション

- 例

- weblogic.GetMessageユーティリティ

- 構文

- オプション

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

- Localizerクラスの概要

- Localizerメソッド

- Localizerのルックアップ・クラス

B WebLogic Server用のLoggableオブジェクトのリファレンス

- Loggableオブジェクトの概要

- Loggableオブジェクトの使用方法

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

- TextFormatterクラスの概要

- TextFormatterクラスを使用したアプリケーションの例

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

- Loggerクラスの概要

- 生成されたLoggerクラスの例

Oracle® Fusion Middleware

Oracle WebLogic Serverアプリケーション・ロギングのためのロギング・サービスの使用

11g リリース1 (10.3.6)

B61615-04(原本部品番号:E13704-05)

2011年11月

このドキュメントでは、WebLogic Serverロギング・サービスを使用してアプリケーション・イベントをモニターする方法について説明します。また、Weblogicによるログ・メッセージの国際化とローカライゼーションのサポートについて説明し、WebLogic Serverで提供されているテンプレートおよびツールを使用して、ロケール固有のメッセージ・カタログを作成または編集する方法を示します。

Oracle Fusion Middleware Oracle WebLogic Serverアプリケーション・ロギングのためのロギング・サービスの使用, 11g リリース1 (10.3.6)

B61615-04

Copyright © 2007, 2011, Oracle and/or its affiliates.All rights reserved.

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007).Oracle America, Inc., 500 Oracle Parkway, Redwood City, CA 94065.

このソフトウェアもしくはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。

はじめに

ここでは、このガイド『アプリケーション・ロギングのためのOracle WebLogicロギング・サービスの使用』で使用されているドキュメント・アクセシビリティ機能および表記規則について説明します。

ドキュメントのアクセシビリティについて

Oracleのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイトhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=docaccを参照してください。

Oracleサポートへのアクセス

Oracleのお客様は、My Oracle Supportから電子サポートにアクセスできます。詳細情報はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=infoか、聴覚に障害があるお客様はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=trsを参照してください。

表記規則

このドキュメントでは次の表記規則を使用します。

規則

意味

太字

太字は、操作に関連するGraphical User Interface要素、または本文中で定義されている用語および用語集に記載されている用語を示します。

斜体

イタリックは、ユーザーが特定の値を指定するプレースホルダー変数を示します。

固定幅フォント

固定幅フォントは、段落内のコマンド、URL、サンプル内のコード、画面に表示されるテキスト、または入力するテキストを示します。

1 概要とロードマップ

この節では、このガイド『アプリケーション・ロギングのためのOracle WebLogic ロギング・サービスの使用』の内容と構成について説明します。

- ドキュメントのスコープと対象読者

- このドキュメントの手引き

- 関連ドキュメント

- ロギングのサンプルとチュートリアル

- このリリースでの新機能と変更点

ドキュメントのスコープと対象読者

このドキュメントでは、WebLogic Serverロギング・サービスを使用してアプリケーション・イベントをモニターする方法について説明します。また、WebLogicによるログ・メッセージの国際化とローカライゼーションのサポートについて説明し、WebLogic Serverで提供されているテンプレートおよびツールを使用して、ロケール固有のメッセージ・カタログを作成または編集する方法を示します。

このドキュメントは、WebLogicメッセージ・カタログおよびロギング・サービスを、アプリケーションでのログ・メッセージの生成手段として使用し、アプリケーション・ログとWebLogic Serverログとの統合を行うJava Platform、Enterprise Edition (Java EE)アプリケーション開発者を対象としています。このドキュメントの内容は、開発からテストおよび本番まで、ソフトウェア・プロジェクトのすべての段階に関連しています。

このドキュメントでは、ロギングの構成、ログ・メッセージのサブスクライブおよびフィルタ処理については扱いません。これらのトピックに関する情報へのリンクについては、「関連ドキュメント」を参照してください。

Java EE技術、Web技術、オブジェクト指向プログラミング技術、およびJavaプログラミング言語について読者が精通していることを前提としています。

このドキュメントの手引き

このドキュメントの構成は次のとおりです。

- 第1章「概要とロードマップ」では、このドキュメントの構成および関連ドキュメントについて説明します。

- 第2章「アプリケーション・ロギングおよびWebLogicロギング・サービス」では、WebLogicロギング・サービスを使用してアプリケーション・イベントをモニターする方法を説明します。

- 第3章「WebLogic Serverの国際化およびローカライゼーション」では、国際化およびローカライゼーションに必要なプロセスの概要を説明します。

- 第4章「WebLogic Serverでのメッセージ・カタログの使い方」では、メッセージ・カタログの種類、メッセージ定義、要素、および引数について説明します。

- 第5章「WebLogic Serverログへのメッセージの書込み」では、メッセージ・カタログの作成方法と使い方、およびNonCatalogLoggerクラスを使用してログ・メッセージの書込みを行う方法を説明します。

- 第6章「WebLogic Serverメッセージ・エディタの使い方」では、WebLogic Server付属のメッセージ・エディタの使い方を説明します。

- 第7章「WebLogic Server国際化ユーティリティの使い方」では、WebLogic Server付属の国際化ユーティリティの使い方を説明します。

- 「付録A WebLogic Server用のLocalizerクラスのリファレンス」では、Localizerクラス、Localizerメソッド、Localizerのキー値、およびLocalizerのルックアップ・プロパティについて説明します。

- 「付録B WebLogic Server用のLoggableオブジェクトのリファレンス」では、Loggableオブジェクトとその使い方について説明します。

- 「付録C WebLogic Server用のTextFormatterクラスのリファレンス」では、TextFormatterクラスを使用するアプリケーションの例を示します。

- 「付録D WebLogic Server用のLoggerクラスのリファレンス」では、Loggerクラスについて説明すると共に、メッセージ・カタログおよびそれに対応するLoggerクラスの例を示します。

関連ドキュメント

オラクル社のWebサイトでは、WebLogic Serverの全ドキュメントが公開されています。特に、Oracle WebLogic Server管理コンソール・ヘルプの「ログの表示と構成」では、WebLogic Serverインスタンスが生成するログ・ファイルおよびログ・メッセージの構成について説明しており、『Oracle WebLogic Serverログ・ファイルの構成とログ・メッセージのフィルタ処理』では、ログ・ファイルにメッセージを書き込むためのWebLogic Serverの構成、メッセージ出力のフィルタ処理、およびWebLogic Serverがブロードキャストするログ・メッセージのリスニングについて説明しています。

国際化とローカライゼーションの全般的な情報については、以下を参照してください。

- Java Developer Connection (http://www.oracle.com/technetwork/java/index.html)

- World Wide Web Consortium (W3C)のWebサイト(http://www.w3.org)の「Internationalization」セクション

ロギングのサンプルとチュートリアル

このドキュメントの他にも、ロギングの構成やAPIの使い方を示す様々なサンプル・ロギング・コードやチュートリアルが用意されています。

Avitek Medical Recordsアプリケーション(MedRec)とチュートリアル

MedRecはWebLogic Serverに付属したエンドツーエンドのサンプルJava EEアプリケーションであり、一元的で独立した医療記録管理システムをシミュレートします。MedRecアプリケーションには、患者、医師、および管理者に対して、様々なクライアントを使用して患者のデータを管理するフレームワークが用意されています。

MedRecはWebLogic ServerとJava EEの機能を例示し、推奨されるベスト・プラクティスを重要点として示します。MedRecはWebLogic Server配布キットに含まれており、Windowsマシンの[スタート]メニューからアクセスできます。Linuxなどのプラットフォームでは、WL_HOME\samples\domains\medrecディレクトリからMedRecを起動できます。ただし、WL_HOMEは、WebLogic Serverの最上位のインストール・ディレクトリです。

WebLogic Server配布キットのロギング・サンプル

WebLogic Server 9.0では、必要に応じてAPIサンプル・コードをWL_HOME\samples\server\examples\src\examplesにインストールできます。WL_HOMEはWebLogic Serverの最上位のインストール・ディレクトリを示します。WebLogic Serverのスタート・メニューからサンプル・サーバーを起動して、サンプルとその実行手順に関する情報を確認することができます。

シンプル・メッセージ・カタログのサンプルを使用したアプリケーションの国際化

このサンプルでは、シンプル・メッセージ・カタログを使用してローカライズされたテキストを表示する様々な方法を示します。サンプルでサポートされている言語を使用するには、適切なオペレーティング・システム・ローカライゼーション・ソフトウェアおよび文字エンコーディングが必要です。このサンプルを含むパッケージは次のとおりです。

java examples.i18n.simple.HelloWorld [lang [country]]

langは2文字からなるISO言語コード(たとえば、英語ならen)、countryは2文字からなるISO国コード(たとえば、米国ならUS)を示します。

ファイルは、WL_HOME\samples\server\examples\src\examples\i18n\simpleに置かれています。WL_HOMEはWebLogic Serverインストール先の最上位ディレクトリを示します。デフォルトのパスはc:\Oracle\Middleware\wlserver_10.3です。ただし、このディレクトリをOracle Middlewareホーム・ディレクトリMW_HOMEにインストールする必要はありません。

このリリースでの新機能と変更点

このリリースで導入されたWebLogic Serverの新機能の一覧については、『Oracle WebLogic Serverの新機能』を参照してください。

2 アプリケーション・ロギングおよびWebLogicロギング・サービス

以下の節では、アプリケーション・ロギングのためのWebLogicロギング・サービスの使用方法を説明します。

- WebLogicロギング・サービスについて

- アプリケーション・ロギングとWebLogicロギング・サービスの統合:主な手順

- WebLogic Server Loggerへのアクセス

WebLogicロギング・サービスについて

WebLogicロギング・サービスは、サーバーおよびアプリケーション・イベントに関する情報を提供します。WebLogicロギング・サービスを利用すれば、どのユーザーが特定のアプリケーション・コンポーネントを呼び出すかを記録したり、エラー状態を報告したり、アプリケーションを本番環境にリリースする前にデバッグしたりできます。またアプリケーションは、このサービスを使用してステータスを伝えたり特定のイベントに応答することができます。『Oracle WebLogic Serverログ・ファイルの構成とログ・メッセージのフィルタ処理』のWebLogicロギング・サービスに関する項を参照してください。

アプリケーションにとって利点となり得るWebLogicロギング・サービスの2つの特徴は、拡張性と国際化のサポートです。

独自のログ・メッセージ・カタログを作成し、WebLogicユーティリティによって、アプリケーション・コードで使用できるJavaクラスを生成できます。アプリケーションから生成されたログ・メッセージは、サーバーによって生成されたログ・メッセージと統合され、同じように扱われます。第5章「WebLogic Serverログへのメッセージの書込み」を参照してください。

作成するログ・メッセージ・カタログは、任意の言語で記述でき、これに様々なロケール用の翻訳を付けることができます。WebLogicにおける国際化のサポートにより、WebLogic Serverが実行されている現在のロケール向けの適切な言語で記述されたログ・メッセージが存在できるようになります。第3章「WebLogic Serverの国際化およびローカライゼーション」を参照してください。

アプリケーション・ロギングを、WebLogicロギング・フレームワークに統合することで得られる主なメリットは、管理がしやすくなることです。管理コンソールを使用して、すべてのログ・ファイルおよび関連オプションを管理できます。Oracle WebLogic Server管理コンソール・ヘルプの「ログの表示と構成」を参照してください。

アプリケーション・ロギングとWebLogicロギング・サービスの統合:主な手順

アプリケーションからのログ・メッセージを生成し、WebLogicロギングに統合するには、いくつかの方法があります。

- WebLogicツールを使用してカスタム・ログ・メッセージ・カタログおよび関連のJava APIをビルドします。アプリケーションは、これらのインタフェースによって公開されたログ・メソッドを呼び出して、ログ・メッセージを生成できます。メッセージ・カタログは、簡単に国際化できます。第4章「WebLogic Serverでのメッセージ・カタログの使い方」を参照してください。

- WebLogicの非カタログ・ロガーを使用して、ログ・メッセージを生成します。カタログからメッセージを呼び出すかわりにNonCatalogLoggerを使用することで、メッセージ・テキストをアプリケーション・コードに直接配置します。「NonCatalogLogger APIの使用」を参照してください。

- javax.servlet.ServletContextにおいてサーブレットおよびJSPで利用可能なlog()メソッドを使用します。「ServletContextの使用」を参照してください。

WebLogicメッセージ・カタログ、NonCatalogLogger、またはサーブレット・ロギングを使用しないアプリケーション開発者には、以下のことが可能です。

- Java Logging APIを使用して、メッセージを生成および配信します。

- Log4Jを使用してメッセージを生成し、Log4JまたはデフォルトのJava Loggingを使用してメッセージを配信するようサーバーを構成します。

- Commons APIを使用してメッセージを生成します。
詳細については、http://jakarta.apache.org/commons/logging/api/index.htmlで「org.apache.commons.logging」を参照してください。

- サーバー・ロギング・ブリッジのハンドラ(Javaロギングの場合)またはアペンダ(Log4Jの場合)を使用します。これにより、アプリケーションのログ・メッセージがWebLogicロギング・サービスにリダイレクトされます。

WebLogic Server Loggerへのアクセス

WebLogicロギング・インフラストラクチャでは、独自のアプリケーションおよびサブシステムによって生成されたログ・イベントを収集するロガーを、各サーバー上でサポートしています。WebLogic Serverは、管理サーバー上のドメイン・ロガーだけでなく、各サーバー上のロガーへの直接アクセスもサポートしています。

デフォルトでは、WebLogicロギング・サービスはJava Logging APIに基づいた実装を使用しています。LoggingHelperクラスを使用すると、サーバー・ロギング用のjava.util.logging.Loggerオブジェクトへのアクセスが可能になります。「LoggingHelper」Javadocを参照してください。

別の方法としては、Java Loggingのかわりに、WebLogicロギング・サービスでLog4jを使用することもできます。Log4jが有効化されていると、weblogic.logging.log4j.Log4jLoggingHelperクラスから、サーバーが使用しているorg.apache.log4j.Loggerへの参照を取得できます。Log4j Logger参照により、独自のカスタム・アペンダ(ハンドラ)をアタッチしてログ・イベントを受け取ったり、Logger参照を使用してWebLogicロギング・サービスにログ・リクエストを発行したりすることができます。Log4jLoggingHelperのJavadocを参照してください。

加えて、WebLogicロギング・サービスでは、Jakarta Commons LogFactoryおよびLogインタフェースも提供しているので、Commons APIに対するプログラミングを行って、ログ・メッセージをサーバー・ログ・ファイルまたは登録されている任意の宛先に送ることができます。このAPIにより抽象化が行われ、基底のロギング実装(Log4jまたはJava Logging)に直に触れなくて済みます。

現在WebLogicロギング・サービスを使用していないアプリケーションでは、サーバー・ロギング・ブリッジを使用できます。サーバー・ロギング・ブリッジは、アプリケーションのメッセージをWebLogicロギング・サービスにリダイレクトするための軽量の手段を提供します。アプリケーションの再構成やコードの変更を行って、WebLogicロギングAPIを使用したりする必要はありません。

サーバー・ロギング・ブリッジは次のように提供されます。

- Javaロギングを使用するアプリケーション向けには、java.util.logging.Handlerオブジェクトとして提供されます。このオブジェクトは、サーバーのweblogic.Server起動コマンドの引数の中で渡されるlogging.propertiesファイルに指定できます。

- Log4Jロギングを使用するアプリケーション向けには、org.apache.log4j.Appenderオブジェクトとして提供されます。このオブジェクトは、アプリケーションのクラスパスに含まれるlog4j.propertiesファイルに指定できます。

ロギング・プロパティ・ファイルには、メッセージの重大度レベルをWebLogicロギング・サービスに伝播する方法、およびメッセージをパブリッシュする宛先も指定できます。

詳細(例を含む)は、『Oracle WebLogic Serverログ・ファイルの構成とログ・メッセージのフィルタ処理』の次の項を参照してください。

- WebLogicロギング・サービスでのLog4jの使い方

- WebLogicロギング・サービスでのCommons APIの使い方

- ベスト・プラクティス: WebLogicロギング・サービスへのJavaロギングまたはLog4jの統合

- サーバー・ロギング・ブリッジに関する項

3 WebLogic Serverの国際化およびローカライゼーション

以下の節では、ローカライゼーションおよび国際化の概要について説明します。

- 国際化およびローカライゼーションの標準規格

- WebLogic Serverの国際化およびローカライゼーションについて

- メッセージ・カタログ

- 国際化用Javaインタフェース

- 国際化されたメッセージを作成する主要な手順

国際化およびローカライゼーションの標準規格

Oracleでは、World Wide Web Consortium (W3C)推奨による、世界中のすべての言語および記述システムで使用できる標準フォーマットおよびプロトコルを採用しています。これらの規格は、WebLogic Serverで使用されているJava国際化APIに組み込まれています。国際化(I18N)とは、簡単かつ高い費用対効果で、またとりわけ、エンジニアリング上の変更を加えることなく、様々な言語および地域に適合させられるよう、ソフトウェアを設計するプロセスを言います。ローカライゼーション(L10N)とは、実行時にロケール固有の言語および構成を使用することです。

WebLogic Serverの国際化およびローカライゼーションについて

ローカライゼーションでは、言語だけでなく、照合、日付と時刻の書式、通貨の書式、および文字コードも対象となります。WebLogicサーバー・ログに記録されるメッセージは、ユーザー個々の要件に合わせてローカライズできます。

WebLogic Serverの国際化では、以下の2種類のデータのローカライゼーションがサポートされます。

- ログ・メッセージ - サーバー・ログに書き込まれる通知メッセージ。適切なメッセージ引数がメッセージの定義で指定されている場合はエラー・メッセージも含まれます。「ログ・メッセージ・カタログの要素」を参照してください。

- シンプル・テキスト: サーバーで表示する必要があるログ・メッセージや例外以外のテキスト(ユーティリティからの出力など)。シンプル・テキストの例としてはヘルプ・メッセージ、グラフィカル・ユーザー・インタフェース(Graphical User Interface: GUI)ラベル、エラー・メッセージなどがあります。「シンプル・テキスト・カタログの要素」を参照してください。

メッセージ・カタログ

国際化するテキストはすべてメッセージ・カタログで定義します。各メッセージ・カタログでは、ログ・メッセージまたはシンプル・テキストのコレクションが定義されます。ログ・メッセージには、ログ・ファイルに書き込まれるデータが含まれています。データは非常に動的で、アプリケーションやシステムの現在の状態に特定の情報が含まれています。ローカライズされたログ・メッセージ・カタログのテキストと結合すれば、このデータはユーザーの言語でエラー状態を説明する、適切にフォーマットされたローカライズ済みのメッセージになります。WebLogic Server管理コンソールに送信される出力は、シンプル・テキストです。ログ・メッセージと同様、シンプル・テキストも動的データと結合して使用できます。

国際化されたメッセージを作成するには、コードの変更や再コンパイルをせずに、様々なロケールに文字列を変換できるように、すべてのメッセージ文字列をメッセージ・カタログに外部化する必要があります。アプリケーション・コードは、ロギング・メソッドの実行時値を提供します。ロギング・メソッドは、現在のロケールに従ってコードとカタログ内のメッセージ文字列を結合します。次に、ローカライズされたメッセージをアプリケーション・コードがログ・ファイルに出力します。

メッセージ・カタログには、次の3つのタイプがあります。

- ログ・メッセージ・カタログ: ログ・メッセージのコレクション。「ログ・メッセージ・カタログの要素」を参照してください。

- シンプル・テキスト・メッセージ・カタログ: シンプル・テキスト・メッセージのコレクション。「シンプル・テキスト・カタログの要素」を参照してください。

- ロケール・メッセージ・カタログ: 最上位のログ・メッセージまたはシンプル・テキスト・メッセージに対応するロケール固有のメッセージのコレクション。「ロケール固有のカタログの要素」を参照してください。

ログ・メッセージまたはロケール・メッセージ・カタログのメッセージIDは、すべてのログ・メッセージまたはロケール・メッセージ・カタログで一意です。メッセージ・カタログ・ファイル内で、各メッセージのローカライズされたバージョンには、エラーを特定する一意のメッセージIDとメッセージ・テキストが割り当てられます。原則的に、メッセージは、サポート担当者が簡単に見つけられるように、システム内の1つの場所からログに記録します。シンプル・テキスト・カタログのメッセージIDは、各シンプル・テキスト・カタログ内で一意です。

メッセージ・カタログの詳細は、第4章「WebLogic Serverでのメッセージ・カタログの使い方」を参照してください。

WebLogic Serverのメッセージ・カタログについては、『Oracle Fusion Middleware Oracle WebLogic Serverメッセージ・カタログ』の「WebLogic Serverメッセージ・カタログ」を参照してください。

国際化用Javaインタフェース

WebLogic Serverでは、国際化およびローカライゼーションにJava国際化インタフェースを使用しています。ユーザーは、WebLogic Serverで国際化をどのように処理するかを理解するだけでなく、このJava国際化インタフェースおよびJava Development Kit (JDK)に組み込まれている以下のクラスに関する知識も必要です。

クラス

説明

java.util.Locale

地理的、政治的、または文化的に区別される特定の地域を表します。

java.util.ResourceBundle

ロケール固有のオブジェクトが格納されるコンテナを提供します。

java.text.MessageFormat

言語に依存しない方法で連結されたメッセージを生成します。

国際化されたメッセージを作成する主要な手順

以下の手順は、WebLogic Serverで使用する、国際化されたメッセージを作成する方法を示しています。この手順の詳細は、このガイドの後半の節で説明します。

1. カタログ内のメッセージを定義して、最上位のログ・メッセージ・カタログまたはシンプル・テキスト・メッセージ・カタログを作成、または編集します。
メッセージ・テキストだけでなく、メッセージが格納する実行時値の型と配置に関する情報も含みます。詳細については、第26章「WebLogic Serverメッセージ・エディタの使い方」を参照してください。

2. weblogic.i18ngenを実行して、ステップ1で作成または編集したカタログを検証し、実行時クラスを生成します。
生成されたクラスには、各メッセージで使用するメソッドが組み込まれています。このクラスは、メッセージ・カタログ・エントリで指定されたデータに従って定義されます。クラスには、カタログのタイプによって、メッセージ・テキストをロギングまたは取得するメソッドが組み込まれます。クラス名の末尾には、LoggerまたはTextFormatterが付きます。詳細は、「weblogic.i18ngenユーティリティ」を参照してください。

3. ステップ1で作成したメッセージ・カタログの必要に応じて、ロケール固有カタログを作成します。「ロケール固有のカタログの例」を参照してください。

4. weblogic.l10ngenを実行して、ロケール固有のカタログを処理します。詳細は、「weblogic.l10ngenユーティリティ」を参照してください。

5. ステップ2で生成したLoggerまたはTextFormatterクラスを使用できるようにアプリケーションを構成します。アプリケーションがメッセージをログに書き込む、または返す場合、メッセージは使用されたLoggerまたはTextFormatterクラスによりローカライズされたバージョンのテキストを用いて書き込まれます。

詳細については、第5章「WebLogic Serverログへのメッセージの書込み」を参照してください。

4 WebLogic Serverでのメッセージ・カタログの使い方

以下の節では、メッセージ・カタログとその使い方について説明します。

- メッセージ・カタログの概要

- メッセージ・カタログの階層

- メッセージ・カタログの命名のガイドライン

- メッセージ引数の使い方

- メッセージ・カタログのフォーマット

メッセージ・カタログの概要

メッセージ・カタログは、テキスト・メッセージのコレクションが格納される単一のXMLファイルです。ビルド処理中にweblogic.i18ngenを使用してこれらのXMLファイルをクラスにコンパイルします。(詳細は、「weblogic.i18ngenユーティリティ」を参照してください)。生成されたクラスのメソッドは、実行時にメッセージをログに記録するために使用されるオブジェクトとなります。

メッセージ・カタログでは、複数のロケールまたは言語がサポートされています。特定のメッセージ・カタログには、最上位カタログというデフォルト・バージョンが必ず1つあり、英語版のメッセージが含まれます。さらに、追加してサポートされるロケールごとに、対応するロケール固有のカタログが付加されます。

最上位カタログ(英語版)には、メッセージの定義に必要な情報がすべて含まれます。ロケール固有のカタログには、メッセージID、変更された日付、および特定ロケールに対応するメッセージの変換だけが含まれます。

メッセージ・カタログ・ファイルは、XML DTD (Document Type Definition :ドキュメント・タイプ定義)によって定義されます。DTDはWL_HOME\server\lib\weblogic.jarのweblogic\msgcatディレクトリに格納されています。WL_HOMEは、WebLogic Serverの最上位のインストール・ディレクトリを示します。デフォルトのパスはc:\Oracle\Middleware\wlserver_10.3です。ただし、このディレクトリをOracle Middlewareホーム・ディレクトリMW_HOMEにインストールする必要はありません。

インストールされたWebLogic Serverには、以下の2つのDTDが付属しています。

- msgcat.dtd - 最上位のデフォルト・カタログの構文を記述します。

- l10n_msgcat.dtd - ロケール固有のカタログの構文を記述します。

WL_HOME\server\lib\weblogic.jarのweblogic\msgcatディレクトリには、最上位のメッセージ・カタログおよびロケール固有のメッセージ・カタログ作成に使用できるテンプレートが入っています。

メッセージ・カタログの作成では、ロギングのすべての必要条件に対応するログ・メッセージ・カタログを1つ作成したり、サブシステムまたはJavaパッケージごとに細かく分けてカタログを作成することもできます。表示するときにそのログの特定の部分に焦点を当てることができるよう、複数のサブシステム・カタログの使用をお薦めします。

シンプル・テキストのカタログの場合は、国際化されるユーティリティごとに1つのカタログを作成することをお薦めします。第6章「WebLogic Serverメッセージ・エディタの使い方」の説明に従い、メッセージ・エディタを使用してメッセージ・カタログを作成します。

メッセージ・カタログの階層

すべてのメッセージは、デフォルトの最上位カタログで定義する必要があります。インストールされたWebLogic Serverでは、SAMPLES_HOME\server\examples\src\examples\i18n\msgcatディレクトリ内にサンプル・カタログのコレクションが格納されています。SAMPLES_HOMEは、WL_HOME\samplesにあるWebLogic Serverサンプル・ホーム・ディレクトリを示します。

基本カタログの様々なローカライゼーションを提供するカタログは、ロケールに基づいた名前がついたmsgcatのサブディレクトリ(ドイツ語の場合はmsgcat/deなど)に定義されています。たとえば、mycat.xmlという最上位カタログと..de/mycat.xmlというそのドイツ語版のカタログがあります。通常、最上位カタログは英語です。ただし、どのカタログでも、SAMPLES_HOME\server\examples\src\examples\i18n\msgcatディレクトリ内のものを除き、英語は必須ではありません。

java.util.Localeのドキュメントで定義されているように、ロケールの指定(deなど)にも階層があります。ロケールでは言語、国、およびバリアントを指定できます。言語は、ロケール指定でもっとも一般的なものです。言語は国コードによって拡張できます。たとえば、en\USはアメリカ英語を示します。これに関連付けられたカタログの名前は、..en\US\mycat.xmlとなります。バリアントはベンダーまたはブラウザに固有であり、言語または国で定義された複数のロケールの間で細かな違い(照合順序など)を持たせるために使用します。

メッセージ・カタログの命名のガイドライン

メッセージ・カタログ・ファイルの名前(xml拡張子を除く)は、実行時クラスおよびプロパティ名の生成に使用されるため、命名は慎重に行ってください。

メッセージ・カタログに名前を付ける場合、以下のガイドラインに従ってください。

- メッセージ・カタログを作成しているターゲット・パッケージ内の既存クラスの名前と競合するようなメッセージ・カタログ名は避けます。

- メッセージ・カタログ名に含まれる文字は、クラス名に使用できる文字のみを使用します。

- クラス名のネーミング・ルールに従います。

たとえば、カタログの名前がXyz.xmlの場合、生成されるクラス名はXyzLogLocalizerおよびXyzLoggerになります。

以下の考慮事項も、メッセージ・カタログ・ファイルに適用されます。

- メッセージIDは、通常は先頭に0が付く6文字の文字列。一部のインタフェースでは、整数表現もサポートされています。

注意:
これは、ログ・メッセージ・カタログにのみ適用されます。シンプル・テキスト・カタログは任意の文字列をとることができます。

- Javaでは、パッケージと呼ばれるコレクションにクラスをまとめることができます。パッケージ名は、特定のカタログが存在するサブシステムの名前と一致している必要があります。

- ログのLocalizer「クラス」は、実際にはResourceBundleプロパティ・ファイルです。

メッセージ引数の使い方

ログ・メッセージのメッセージ本文、メッセージ詳細、原因、およびアクションなどのセクションには、java.text.MessageFormatに記載されているようなメッセージ引数を組み込むことができます。メッセージの内容が、java.text.MessageFormatで指定されたパターンに準拠していることを確認してください。シンプル・テキスト・メッセージでは、引数を入れられるのは、メッセージ本文のセクションに限られます。引数は、実行時に動的に設定される値を表します。これらの値は、メッセージを出力するなどのルーチンに渡されます。1つのメッセージには0 - 9で番号付けされた10個までの引数をサポートできます。メッセージ本文にはすべての引数を入れる必要がありますが、メッセージ定義(メッセージ本文、メッセージ詳細、妥当な原因)の任意のテキスト・セクションにもこれらの引数の任意のサブセットを入れることができます。メッセージ引数は開発時にメッセージ定義に挿入され、実行時においてメッセージがログに記録されるときに適切なメッセージ・コンテンツに置き換えられます。

以下は、XMLログ・メッセージ定義の抜粋で、メッセージ引数の使い方を示しています。引数の番号は、method属性で指定された引数の1つと対応している必要があります。具体的には、{0}は最初の引数と、{1}は2番目の引数と対応している必要があります。例4-1では、{0}は開けないファイルを表し、{1}は適切に開かれるファイルを表します。

例4-1 メッセージ引数の例

<messagebody>Unable to open file, {0}. Opening {1}. All arguments must be in body.</messagebody>

<messagedetail> File, {0} does not exist. The server will restore the file
contents from {1}, resulting in the use of default values for all future
requests. </messagedetail>

<cause>The file was deleted</cause>

<action>If this error repeats then investigate unauthorized access to the
file system.</action>

次に、method属性の例を示します。

-method="logNoFile(String name, String path)"

例4-1のメッセージの例では、2つの引数{0}および{1}が使用されています。

- 両方とも<messagebody>で使用されています。

- 両方とも<messagedetail>で使用されています。

- どちらも<cause>または<action>では使用されていません。

注意:
1つのメッセージには0 - 9で番号付けされた10個までの引数をサポートできます。メッセージ本文にはすべての引数を入れる必要がありますが、メッセージ定義(メッセージ詳細、原因、アクション)の任意のテキスト・セクションにもこれらの引数の任意のサブセットを入れることができます。

また、引数は文字列であるか、文字列として表現可能である必要があります。数値データは{n,number}として表されます。日付は{n,date}としてサポートされます。また、ログ・メッセージでは重大度レベルを割り当てる必要があります。ログ・メッセージは、Loggerメソッドによってmethod属性で定義されているとおりに生成されます。

メッセージ・カタログのフォーマット

最上位のカタログ・ファイルとロケール固有のカタログ・ファイルでは、カタログのフォーマットが若干異なります。最上位カタログでは、基本ロケール(デフォルトでは、英語)のテキスト・メッセージが定義されます。ロケール固有のカタログ(スペイン語に翻訳されたカタログなど)は、最上位バージョンで定義されているテキストの翻訳だけを備えています。さらに、ログ・メッセージ・カタログではシンプル・テキスト・カタログと定義の方法が異なります。

各タイプのメッセージ・カタログの例および要素は、以下の節で説明されています。

- ログ・メッセージ・カタログの例

- ログ・メッセージ・カタログの要素

- シンプル・テキスト・カタログの例

- シンプル・テキスト・カタログの要素

- ロケール固有のカタログの例

- ロケール固有のカタログの要素

ログ・メッセージ・カタログの例

次の例は、ログ・メッセージを1つ持つログ・メッセージ・カタログMyUtilLog.xmlを示しています。このログ・メッセージは、messagebody、messagedetail、cause、およびactionの各要素の使用方法を示しています。

例4-2 ログ・メッセージ・カタログの例

<?xml version="1.0"?>
<!DOCTYPE message_catalog PUBLIC "weblogic-message-catalog-dtd"
"http://www.bea.com/servers/wls90/dtd/msgcat.dtd">
<message_catalog
l10n_package="programs.utils"
i18n_package="programs.utils"
subsystem="MYUTIL"
version="1.0"
baseid="600000"
endid="600100"
<log_message
messageid="600001"
severity="warning"
method="logNoAuthorization(String arg0, java.util.Date arg1,
int arg2)"
<messagebody>
Could not open file, {0} on {1,date} after {2,number} attempts.
</messagebody>
<messagedetail>
The configuration for this application will be defaulted to
factory settings. Custom configuration information resides
in file, {0}, created on {1,date}, but is not readable.
</messagedetail>
<cause>
The user is not authorized to use custom configurations. Custom
configuration information resides in file, {0}, created on
{1,date}, but is not readable.The attempt has been logged to
the security log.
</cause>
<action>
The user needs to gain approriate authorization or learn to
live with the default settings.
</action>
</log_message>
</message_catalog>

ログ・メッセージ・カタログの要素

この節では、ログ・メッセージ・カタログの以下の要素に関するリファレンス情報を提供します。

- message_catalog要素

- log_message要素

- log_message要素の子要素

message_catalog要素

message_catalog要素は、ログ・メッセージ・カタログを表します。次の表では、message_catalog要素で定義できる各属性について説明します。

属性

デフォルト値

必須/オプション

説明

i18n_package

weblogic.i18n

オプション

このカタログのLoggerクラスを含むJavaパッケージ。クラスの名前はカタログ・ファイルの名前に基づいて付けられます。たとえば、カタログの名前がmycat.xmlの場合、生成されるLoggerクラスの名前は<i18n_package>.mycatLogger.classになります。
構文:標準のJavaパッケージ構文

例: i18n_package="programs.utils"

l10n_package

weblogic.i18n

オプション

カタログのLogLocalizerプロパティを含むJavaパッケージ。たとえば、カタログの名前がmycat.xmlの場合は、<l10n_package>.mycatLogLocalizer.propertiesおよび<l10n_package>mycatLogLocalizerDetail.propertiesという名前のプロパティ・ファイルが生成されます。
構文:標準のJavaパッケージ構文

例: l10n_package="programs.utils"

subsystem

なし

必須

このカタログと関連付けられているサブシステムを識別する頭字語。サブシステムの名前はサーバー・ログに含まれ、メッセージの分離を目的として使用されます。
構文:文字列

例: subsystem="MYUTIL"

version

なし

必須

使用されるmsgcat.dtdのバージョンを指定します。
使用方法: 「1.0」である必要があります。

構文: x.y (xおよびyは数値)

例: version="1.0"

baseid

000000 : WebLogic Serverカタログ
500000 :ユーザー定義のカタログ

オプション

このカタログで使用される最低のメッセージIDを指定します。
構文: 1桁から6桁の数値。

例: baseid="600000"

endid

499999 : WebLogic Serverカタログ
999999 :ユーザー定義のカタログ

オプション

このカタログで使用される最高のメッセージIDを指定します。
構文: 1桁から6桁の数値。

例: endid="600100"

loggable

false

オプション

Loggableオブジェクトを返す追加メソッドを生成するかどうかを示します。
構文: "true"または"false"

例: loggable="true"

prefix

ユーザー定義のカタログの場合はNull
WebLogic Serverカタログの場合は「BEA」

オプション

ログに記録されるときにメッセージIDの先頭に追加する文字列を指定します。サーバー・メッセージは、接頭辞のデフォルトは「BEA」で、別の接頭辞を指定することはできません。ユーザー・メッセージは、任意の接頭辞を指定することが可能です。接頭辞が付いたメッセージIDは、ログ・エントリで次のように表示されます。

<[prefix-]id>

ここで、prefixはこの属性であり、idは特定のメッセージに関連付けられた6桁のメッセージID。

たとえば、prefixが「XYZ」の場合、メッセージ987654はログ・エントリでは<XYZ-987654>として表示されます。接頭辞が定義されていない場合、ログ・エントリは<987654>となります。

構文:任意の文字列(5文字まで)

例: prefix="BEA"

description

Null(説明なし)

オプション

カタログの内容を説明するオプションな属性。
構文:任意の文字列

例: description="Contains messages logged by the foobar application"

log_message要素

次の表では、log_message要素で定義できる各属性について説明します。

属性

デフォルト値

必須/オプション

説明

messageid

なし

必須

このログ・メッセージの一意の識別子。識別子は、すべてのカタログにわたり一意である必要があります。値は、baseid属性とendid属性で定義された範囲で指定する必要があります。
使用方法:値は、message_catalog属性のbaseid属性とendid属性で定義された範囲で指定する必要があります。

構文: 1桁から6桁の数値。

例: messageid="600001"

datelastchanged

なし

オプション

このメッセージの修正管理に使用される日付と時刻のスタンプ。日付は、カタログで動作するユーティリティによって提供されます。
構文:

Long.toString(new Date().getTime());

使用方法:日付は、カタログで動作するユーティリティ(メッセージ・エディタなど)によって提供されます。

構文: Long.toString(new Date().getTime());

severity

なし

必須

ログ・メッセージの重大度を示します。値は、debug、info、warning、error、notice、critical、alert、またはemergencyのいずれかである必要があります。ユーザー定義のカタログで使用できるのは、debug、info、warning、およびerrorに限られる場合があります。
例: severity="warning"

method

なし

必須

このメッセージをログに記録するためのメソッド・シグネチャ。
構文は標準のJavaメソッド・シグネチャから修飾子、セミコロン、および拡張子を除いたもの。引数の型にはJavaプリミティブまたはJavaクラスを使用できます。クラスはjava.langにない場合は完全修飾である必要があります。また、クラスはjava.text.MessageFormatの規約に準拠している必要があります。たいていの場合、クラス引数は便利なtoString()メソッドを備えています。

引数には有効であればどのような名前でも指定できますが、argn (nは0 - 9)の規約に従っている必要があります。指定できる引数は10個まで。各argnについて、「log_message要素の子要素」で説明されているテキスト要素に少なくとも1つの対応するプレースホルダーが存在している必要があります。プレースホルダーの形式は{n}、{n,number}または{n,date}です。

methodtype

logger

オプション

生成するメソッドのタイプを指定します。メソッドは、LoggerまたはGetterのいずれかです。Loggerメソッドは、メッセージ本文をデフォルトのロケールにフォーマットし、結果をログに記録します。Getterメソッドは、[susbsystem:msgid]textのように、メッセージ本文の前にサブシステムおよびメッセージIDを付けて返します。
構文:値は、「logger」および「getter」

stacktrace

true

オプション

Throwableの引数としてスタック・トレースを生成するかどうかを示します。trueまたはfalseを指定できます。値がtrueの場合はトレースが生成されます。
構文: stacktrace="true"

retired

false

オプション

メッセージがリタイアされているかどうかを示します。リタイアされたメッセージとは、前のリリースで使用されていたが、今は古くなり、現在のバージョンでは使用されないメッセージです。リタイアされたメッセージは、クラスまたはリソースの生成で使用しません。
構文:値は、trueおよびfalse

例: retired="true"

log_message要素の子要素

次の表では、log_message要素の子要素を説明します。

要素

親要素

必須/オプション

説明

messagebody

log_message

必須

このメッセージの短い説明。
messagebody要素では、0から10のプレースホルダー{n}を使用できます。プレースホルダーは、ログ・メッセージがローカライズされるときに適切な引数で置き換えられます。

最後の引数がThrowableまたはサブクラスでない場合、メッセージ本文には、対応するメソッド属性にリストされたすべての引数に対するプレースホルダーを含める必要があります。

一重引用符は、java.text.MessageFormatによって特別に解析されるため、使用は慎重に行います。メッセージ引数に引用符を付けた方がよい場合は、(下記の例のように)二重引用符を使用します。メッセージが1つ以上のプレースホルダーを持つ場合、一重引用符が正しく表示されるようにするには(たとえば、アポストロフィとして)、もう1つ一重引用符を付ける必要があります。

構文:文字列

例:

<messagebody>Could not open file "{0}" created on {1,date}.</messagebody>

messagedetail

log_message

オプション

イベントの詳しい説明。この要素には、任意の引数のプレースホルダーを含めることができます。
構文:文字列

例:

<messagedetail>The configuration for this application will be defaulted to factory settings.</messagedetail>

cause

log_message

オプション

問題の根本的な原因。この要素には、任意の引数のプレースホルダーを含めることができます。
構文:文字列

例: <cause>The user is not authorized to use custom configurations.The attempt has been logged to the security log.</cause>

action

log_message

オプション

適切な解決策。この要素には、任意の引数のプレースホルダーを含めることができます。
構文:文字列

例: <action>The user needs to gain appropriate authorization or learn to live with the default settings.</action>

シンプル・テキスト・カタログの例

次の例は、1つのシンプル・テキスト定義を備えるシンプル・テキスト・カタログMyUtilLabels.xmlを示しています。

<messagebody>
File
</messagebody>

例4-3 シンプル・テキスト・カタログの例

<?xml version="1.0"?>
<!DOCTYPE message_catalog PUBLIC "weblogic-message-catalog-dtd"
"http://www.bea.com/servers/wls90/dtd/msgcat.dtd">
<message_catalog>
l10n_package="programs.utils"
i18n_package="programs.utils"
subsystem="MYUTIL"
version="1.0"
<message>
messageid="FileMenuTitle"
<messagebody>
File
</messagebody>
</message>
</message_catalog>

シンプル・テキスト・カタログの要素

この節では、シンプル・テキスト・カタログの以下の要素に関するリファレンス情報を提供します。

- message_catalog要素

- message要素

- messagebody要素

message_catalog要素

次の表では、message_catalog要素で定義できる各属性について説明します。

要素で定義できる属性について説明しています。" title="message_catalog要素で定義できる各属性" width="100%">

属性

デフォルト値

必須/オプション

説明

l10n_package

weblogic.i18n

オプション

このカタログに生成されたTextFormatterクラスおよびTextLocalizerプロパティを含むJavaパッケージ。クラスの名前はカタログ・ファイルの名前に基づいて付けられます。カタログ・ファイルの名前がmycat.xmlの場合は、<l10n_package>.mycatLogLocalizer.propertiesという名前のプロパティ・ファイルが生成されます。
構文:標準のJavaパッケージ構文

例: l10n_package="programs.utils"

subsystem

なし

必須

このカタログと関連付けられているサブシステムを識別する頭字語。サブシステムの名前はサーバー・ログに含まれ、メッセージの分離を目的として使用されます。
構文:文字列

例: subsystem="MYUTIL"

version

なし

必須

使用されるmsgcat.dtdのバージョンを指定します。書式はn.nで、たとえばversion="1.0"のように定義します。"1.0"以上である必要があります。
例: version="1.0"

description

Null

オプション

カタログの内容を説明する省略可能な属性。
構文:文字列

例: description="Contains labels used in the foobar GUI"

message要素

次の表では、message要素で定義できる各属性について説明します。

属性

デフォルト値

必須/オプション

説明

messageid

なし

必須

このログ・メッセージの一意の識別子(英数字の文字列)。一意性はこのカタログのコンテキスト内でのみ必須です。messageはmessage_catalogの子要素です。

datelastchanged

なし

オプション

このメッセージの修正の管理に便利な日付と時刻のスタンプ。

method

なし

オプション

このメッセージをフォーマットするためのメソッド・シグネチャ。
構文は標準のJavaメソッド・シグネチャから戻り値の型、修飾子、セミコロン、および拡張子を除いたもの。戻り値の型は常にStringです。引数の型にはJavaプリミティブまたはJavaクラスを使用できます。クラスはjava.langにない場合は完全修飾である必要があります。また、クラスはjava.text.MessageFormatの規約に準拠している必要があります。たいていのクラス引数は便利なtoString()メソッドを備えており、対応するMessageFormatプレースホルダーは文字列である必要があります(つまり{n}の形式)。引数には有効であればどのような名前でも指定できます。指定できる引数は10個までです。

各引数について、次に説明するmessagebody要素に少なくとも1つの対応するプレースホルダーが存在する必要があります。プレースホルダーの形式は{n}、{n,number}、または{n,date}です。

例:

method="getNoAuthorization

(String filename, java.util.Date creDate)"

この例は、次のようにTextFormatterクラスのメソッドになります。

public String getNoAuthorization

(String filename, java.util.Date creDate)

messagebody要素

次の表では、message要素の子要素を説明します。

要素

親要素

必須/オプション

説明

messagebody

message

必須

メッセージと関連付けられたテキスト。
この要素では、0個以上のプレースホルダー{n}を使用できます。プレースホルダーは、ログ・メッセージがローカライズされるときに適切な引数で置き換えられます。

ロケール固有のカタログの例

次の例は、...\msgcat\fr\MyUtilLabels.xmlにあるメッセージのフランス語版です。

翻訳されたメッセージを例4-4に示します。

例4-4 フランス語に翻訳されたメッセージの例

<?xml version="1.0"?>
<!DOCTYPE message_catalog PUBLIC
"weblogic-locale-message-catalog-dtd"
"http://www.bea.com/servers/wls90/dtd/l10n_msgcat.dtd">
<locale_message_catalog
l10n_package="programs.utils"
subsystem="MYUTIL"
version="1.0">
<message>
<messageid="FileMenuTitle">
<messagebody> Fichier </messagebody>
</message>
</locale_message_catalog>

messagebody、messagedetail、cause、およびactionの各要素でテキストを入力するときには、有効なUTF-8(Unicode Transformation Format-8)文字を生成するツールを使用するとともに、適切なキーボードのマッピングがインストールされている必要があります。UTF-8は、ASCII文字のエンコーディングを最適化する、効率的なUnicode文字列エンコーディング方式です。メッセージ・カタログでは常にUTF-8エンコーディング方式が使用されます。WebLogic Serverと共にインストールされるMessageLocalizerユーティリティは、有効なUTF-8文字の生成に使用できるツールです。

ロケール固有のカタログの要素

ロケール固有のカタログは、最上位カタログのサブセットです。ロケール固有のカタログは、それらが表すロケールに基づいた名前のサブディレクトリに格納されます。以下の節で説明する要素および属性は、ロケール固有のカタログに有効なものです。

- locale_message_catalog要素

- log_message要素

- その他のlocale_message_catalog要素

locale_message_catalog要素

次の表では、locale_message_catalog要素で定義できる各属性について説明します。

属性

デフォルト値

必須/オプション

説明

l10n_package

weblogic.i18n

オプション

このカタログに対して生成されたLogLocalizerまたはTextLocalizerプロパティを含むJavaパッケージ。プロパティ・ファイルの名前はカタログ・ファイル名に基づいて設定されます。
たとえば、mycat.xmlという名前のフランス語版のログ・メッセージ・カタログでは、プロパティ・ファイルは<l10n_package>.mycatLogLocalizer_fr_FR.propertiesとなります。

version

None

必須

使用されるmsgcat.dtdのバージョンを指定します。書式はn.nで、たとえばversion="1.0"のように定義します。"1.0"以上である必要があります。

log_message要素

ロケール固有のカタログでは、最上位のログ・メッセージ・カタログのlog_message要素で定義された属性が使用されるため、この要素は改めて定義する必要はありません。

その他のlocale_message_catalog要素

ロケール固有のカタログでは、最上位のログ・メッセージ・カタログで定義されたmessagebody、messagedetail、cause、およびactionの各カタログ要素を使用するため、これらの要素を改めて定義する必要はありません。

5 WebLogic Serverログへのメッセージの書込み

以下の節では、ログ・メッセージをWebLogicサーバー・ログ・ファイルに書き込むことによってアプリケーションの管理を効率化する方法について説明します。

- I18Nメッセージ・カタログ・フレームワークの使い方:主な手順

- NonCatalogLogger APIの使用

- ServletContextの使用

- サーブレットとリソース・アダプタのロギングの構成

- クライアント・アプリケーションからのメッセージの書込み

- デバッグ・メッセージの書込み

I18Nメッセージ・カタログ・フレームワークの使い方:主な手順

国際化(I18N)メッセージ・カタログ・フレームワークは、アプリケーションがWebLogicサーバー・ログに独自のメッセージ・セットを送るために使用する一連のユーティリティとAPIを提供します。

I18Nメッセージ・カタログ・フレームワークを使用してログ・メッセージを書き込むには、以下のタスクを行います。

- メッセージ・カタログの作成

- メッセージ・カタログのコンパイル

- コンパイルされたメッセージ・カタログからのメッセージの使用

メッセージ・カタログの作成

メッセージ・カタログは、一連のテキスト・メッセージを含んだXMLファイルです。通常、アプリケーションはデフォルト言語のメッセージ・セットを含むメッセージ・カタログ1つを使用し、他の言語のメッセージを含む追加カタログを任意で使用します。

適切にフォーマットされたメッセージ・カタログを作成および編集するには、WebLogic Serverと一緒にインストールされるグラフィカル・ユーザー・インタフェース(GUI)、WebLogicメッセージ・エディタ・ユーティリティを使用します。ローカルの言語で対応するメッセージを作成するには、これもWebLogic ServerでインストールされるGUIであるメッセージ・ローカライザを使用します。

メッセージ・エディタにアクセスするには、WebLogic Serverホストから次の手順を実行します。

1. WL_HOME\server\bin\setWLSEnv.cmd(UNIXの場合setWLSEnv.sh)を入力してクラスパスを設定します。WL_HOMEはWebLogic Serverのインストール・ディレクトリです。

2. 次のコマンドを入力します。java weblogic.MsgEditor

3. 新しいカタログを作成するには、「ファイル」>「新しいカタログ」を選択します。
メッセージ・エディタの使い方については、第6章「WebLogic Serverメッセージ・エディタの使い方」を参照してください。

4. メッセージ・エディタにメッセージを追加した後は、「ファイル」>「カタログを保存」を選択します。

5. 次に、「ファイル」>「終了」を選択します。

メッセージ・ローカライザにアクセスするには、WebLogic Serverホストから次の手順を実行します。

1. WL_HOME\server\bin\setWLSEnv.cmd(UNIXの場合setWLSEnv.sh)を入力してクラスパスを設定します。WL_HOMEはWebLogic Serverのインストール・ディレクトリです。

2. 次のコマンドを入力します。java weblogic.MsgLocalizer

3. メッセージ・ローカライザのGUIを使用して、特定ロケールのカタログを作成します。
基本的なコマンド・ライン・ヘルプにアクセスするには、「java weblogic.MsgEditor -help」と入力します。

メッセージ・カタログのコンパイル

メッセージ・カタログを作成した後は、i18ngenおよびl10ngenコマンド・ライン・ユーティリティを使用してプロパティ・ファイルを生成し、Javaクラス・ファイルを生成およびコンパイルします。これらのユーティリティはメッセージ・カタログのXMLファイルを入力とし、コンパイルされたJavaクラスを作成します。Javaクラスには、XMLファイルのメッセージに対応するメソッドが含まれます。

詳細については、第7章「WebLogic Server国際化ユーティリティの使い方」を参照してください。

メッセージ・カタログをコンパイルするには、次を行います:

1. コマンド・プロンプトから、WL_HOME\server\bin\setWLSEnv.cmd(UNIXの場合setWLSEnv.sh)を使用してクラスパスを設定します。WL_HOMEは、WebLogic Serverをインストールしたディレクトリです。

2. 次のコマンドを入力します。

java weblogic.i18ngen -build -d targetdirectory source-files

説明:

- targetdirectoryは、i18ngenユーティリティが生成およびコンパイルしたファイルを配置するルート・ディレクトリ。Javaファイルは、メッセージ・カタログのi18n_package値およびl10n_package値に基づいてサブディレクトリに配置されます。
カタログのプロパティ・ファイルi18n_user.propertiesは、targetdirectoryに配置されます。デフォルトのターゲット・ディレクトリは現在のディレクトリです。

- source-filesは、コンパイルするメッセージ・カタログ・ファイル。1つまたは複数のディレクトリ名を指定すると、i18ngenが指定されたディレクトリ内のすべてのXMLファイルを処理します。ファイル名を指定する場合は、すべてのファイルの名前にXMLの接尾辞が付いている必要があります。すべてのXMLファイルは、msgcat.dtdの構文に準拠していなければなりません。

i18ngenでJavaファイルが生成される場合は、Loggerが各メッセージ・カタログ・ファイルの名前に付けられます。

3. 「メッセージ・カタログの作成」でロケール固有のカタログを作成した場合は、次の手順に従ってプロパティ・ファイルを生成します。

1. 現在のコマンド・プロンプトで、ステップ2で指定したtargetdirectoryをCLASSPATH環境変数に追加します。特定ロケールのプロパティ・ファイルを生成するには、i18ngenユーティリティで生成されたすべてのクラスがクラスパスになければなりません。

2. 次のコマンドを入力します。

java weblogic.l10ngen -d targetdirectory source-files

説明:

- targetdirectoryは、l10ngenユーティリティが生成したプロパティ・ファイルを配置するルート・ディレクトリ。通常は、ステップ2で指定したtargetdirectoryと同じです。プロパティ・ファイルは、メッセージ・カタログのl10n_package値に基づいてサブ・ディレクトリに配置されます。

- source-filesは、プロパティ・ファイルを生成するメッセージ・カタログ。メッセージ・エディタで作成される最上位のカタログを指定する必要があります。メッセージ・ローカライザで作成される特定ロケールのカタログは指定しません。通常は、手順2で指定したものと同じsource-filesまたはソース・ディレクトリです。

4. ほとんどの場合は、メッセージのクラス・ファイルとプロパティ・ファイルはアプリケーションと同じパッケージ階層に配置することをお薦めします。
メッセージのクラスとプロパティをアプリケーションのパッケージ階層に含めない場合は、クラスが必ずアプリケーションのクラスパスに存在するようにする必要があります。

i18ngenコマンドの詳細は、第7章「WebLogic Server国際化ユーティリティの使い方」を参照してください。

例:メッセージ・カタログのコンパイル

この例では、メッセージ・エディタで、タイプがloggableのメッセージが1つ含まれるメッセージ・カタログが作成されています。メッセージ・エディタは、そのメッセージ・カタログをc:\MyMsgCat\MyMessages.xmlとして保存します。

例5-1は、メッセージ・カタログの内容を示しています。

例5-1 サンプル・メッセージ・カタログ

<?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="com.xyz.msgcat"
l10n_package="com.xyz.msgcat.l10n"
subsystem="MyClient"
version="1.0"
baseid="700000"
endid="800000"
loggables="true"
prefix="XYZ-"
>
<!--  Welcome message to verify that the class has been invoked-->
<logmessage
messageid="700000"
datelastchanged="1039193709347"
datehash="-1776477005"
severity="info"
method="startup()"
>
<messagebody>
The class has been invoked.
</messagebody>
<messagedetail>
Verifies that the class has been invoked
and is generating log messages
</messagedetail>
<cause>
Someone has invoked the class in a remote JVM.
</cause>
<action> </action>
</logmessage>
</message_catalog>

さらに、メッセージ・ローカライザで、MyMessages.xmlのメッセージのスペイン語バージョンが作成されます。メッセージ・ローカライザは、そのスペイン語のカタログをc:\MyMsgCat\es\ES\MyMessages.xmlとして保存します。

例5-2 スペイン語の特定ロケール・カタログ

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE locale_message_catalog PUBLIC
"weblogic-locale-message-catalog-dtd"
"http://www.bea.com/servers/wls90/dtd/l10n_msgcat.dtd">
<locale_message_catalog
version="1.0"
>
<!-- Mensaje agradable para verificar que se haya invocado la clase. -->
<logmessage
messageid="700000"
datelastchanged="1039546411623"
>
<messagebody>
La clase se haya invocado.
</messagebody>
<messagedetail>
Verifica que se haya invocado la clase y está
generando mensajes del registro.
</messagedetail>
<cause>Alguien ha invocado la clase en un JVM alejado.</cause>
<action> </action>
</logmessage>
</locale_message_catalog>

メッセージ・エディタで作成されたメッセージ・カタログをコンパイルするには、次のコマンドを入力します。

java weblogic.i18ngen -build -d c:\MessageOutput c:\MyMsgCat\MyMessages.xml

i18ngenユーティリティでは、以下のファイルが作成されます。

- c:\MessageOutput\i18n_user.properties

- c:\MessageOutput\com\xyz\msgcat\MyMessagesLogger.java

- c:\MessageOutput\com\xyz\msgcat\MyMessagesLogger.class

- c:\MessageOutput\com\xyz\msgcat\l10n\MyMessagesLogLocalizer.properties

- c:\MessageOutput\com\xyz\msgcat\l10n\MyMessagesLogLocalizerDetails.properties

スペイン語カタログのプロパティ・ファイルを作成するには、次を行います:

1. 次のように入力して、i18nのクラスをコマンド・プロンプトのクラスパスに追加します。

2. set CLASSPATH=%CLASSPATH%;c:\MessageOutput

3. 入力:

4. java weblogic.l10ngen -d c:\MessageOutput c:\MyMsgCat\MyMessages.xml

l10ngenユーティリティで、以下のファイルが作成されます。

- c:\MessageOutput\com\xyz\msgcat\l10n\MyMessagesLogLocalizer_es_ES.properties

- c:\MessageOutput\com\xyz\msgcat\l10n\MyMessagesLogLocalizerDetails_es_ES.properties

コンパイルされたメッセージ・カタログからのメッセージの使用

i18ngenおよびl10ngenによって生成されたクラスとプロパティ・ファイルは、WebLogcサーバー・ログにメッセージを送信するためのインタフェースを提供します。これらのクラスの中では、各ログ・メッセージはアプリケーションが呼び出す1つのメソッドによって表されます。

コンパイル済みメッセージ・カタログのメッセージを使用するには:

1. アプリケーション内のクラス・ファイルでは、「メッセージ・カタログのコンパイル」でコンパイルされたLoggerクラスをインポートします。
パッケージ名を検証するには、テキスト・エディタでメッセージ・カタログのXMLファイルを開き、i18n_package属性の値を確認します。たとえば、例5-1にある次のようなメッセージ・カタログのセグメントで、パッケージ名が示されています。

<message_catalog

i18n_package="com.xyz.msgcat"

対応するクラスをインポートするには、次の行を追加します。

import com.xyz.msgcat.MyMessagesLogger;

2. メッセージ名と関連付けられているメソッドを呼び出します。
カタログ内の各メッセージには、メッセージを表示するために呼び出すメソッドを指定するmethod属性があります。たとえば、例5-1にある次のようなメッセージ・カタログのセグメントで、メソッドの名前が示されています。

<logmessage
messageid="700000"
datelastchanged="1039193709347"
datehash="-1776477005"
severity="info"
method="startup()"
>

例5-3は、このstartupメソッドを呼び出す単純なクラスです。

例5-3 メッセージ・カタログを使用するクラスの例

import com.xyz.msgcat.MyMessagesLogger;
public class MyClass {
public static void main (String[] args) {
MyMessagesLogger.startup();
}
}

JVMのシステム・プロパティで現在の場所がスペインであることが指定されている場合、メッセージはスペイン語で出力されます。

NonCatalogLogger APIの使用

I18Nメッセージ・カタログ・フレームワークの使用に加え、アプリケーションではweblogic.logging.NonCatalogLogger APIを使用してWebLogicサーバー・ログにメッセージを送信できます。カタログからメッセージを呼び出すかわりにNonCatalogLoggerを使用することで、メッセージ・テキストをアプリケーション・コードに直接配置します。アプリケーションを国際化する必要がある場合には、メッセージ・ロギングの唯一の手段としてこの機能を使用することはお薦めしません。

また、NonCatalogLoggerは(WebLogic Server JVM内で実行されているのではなく)独自のJVMで実行されているクライアント・コードによっても使用されます。詳細は、「クライアント・アプリケーションからのメッセージの書込み」を参照してください。

WebLogic Server JVMの内部で実行されるアプリケーションでNonCatalogLoggerを使用するには、以下を行うためのコードをアプリケーションに追加します。

1. weblogic.logging.NonCatalogLoggerインタフェースをインポートします。

2. 以下のコンストラクタを使用してNonCatalogLoggerオブジェクトをインスタンス化します。

NonCatalogLogger(java.lang.String myApplication)

myApplicationは、アプリケーションからWebLogicサーバー・ログに送信されるメッセージを識別するために、ユーザーが指定する名前です。

3. いずれかのNonCatalogLoggerメソッドを呼び出します。
正常な処理を報告するには、以下のメソッドを使用します。

- info(java.lang.String msg)

- info(java.lang.String msg, java.lang.Throwable t)

サーバーまたはアプリケーションの正常な処理に影響しない要注意の処理、イベント、または構成を報告するには、以下のメソッドを使用します。

- warning(java.lang.String msg)

- warning(java.lang.String msg, java.lang.Throwable t)

システムまたはアプリケーションが割込みやサービスの停止をせずに対処できるエラーを報告するには、以下のメソッドを使用します。

- error(java.lang.String msg)

- error(java.lang.String msg, java.lang.Throwable t)

処理の詳細またはアプリケーションの状態を示すには、次のメソッドを使用します。それらのデバッグ・メッセージは、JMX通知としてブロードキャストされません。この重大度を使用する場合、アプリケーション用の「デバッグ・モード」を作成することをお薦めします。次に、デバッグ・モードで実行されるよう構成されている場合にのみデバッグ・メッセージを出力するようアプリケーションを構成します。デバッグ・メッセージの使い方については、「デバッグ・メッセージの書込み」を参照してください。

- debug(java.lang.String msg)

- debug(java.lang.String msg, java.lang.Throwable t)

Throwable引数を取るすべてのメソッドは、サーバー・ログにスタック・トレースを出力する可能性があります。NonCatalogLogger APIについては、「weblogic.logging.NonCatalogLogger」Javadocを参照してください。

例5-4に、NonCatalogLogger APIを使用して様々な重大度のメッセージをWebLogicサーバー・ログに書き込むサーブレットを示します。

例5-4 NonCatalogLoggerメッセージの例

import java.io.PrintWriter;
import java.io.IOException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import javax.naming.Context;
import weblogic.jndi.Environment;
import weblogic.logging.NonCatalogLogger;
public class MyServlet extends HttpServlet {
public void service (HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
NonCatalogLogger myLogger = null;
try {
out.println("Testing NonCatalogLogger. See
WLS Server log for output message.");
// Constructing a NonCatalogLogger instance. All messages from this
// instance will include a <MyApplication> string.
myLogger = new NonCatalogLogger("MyApplication");
// Outputting an INFO message to indicate that your application has started.
mylogger.info("Application started.");
// For the sake of providing an example exception message, the next
// lines of code purposefully set an initial context. If you run this
// servlet on a server that uses the default port number (7001), the
// servlet will throw an exception.
Environment env = new Environment();
env.setProviderUrl("t3://localhost:8000");
Context ctx = env.getInitialContext();
}
catch (Exception e){
out.println("Can't set initial context: " + e.getMessage());
// Prints a WARNING message that contains the stack trace.
mylogger.warning("Can't establish connections. ", e);
}
}
}

上記の例で示したサーブレットを8000以外のリスニング・ポートを指定するサーバー上で実行すると、以下のメッセージがWebLogicサーバー・ログ・ファイルに出力されます。メッセージは山カッコ(< >)で囲まれた一連の文字列またはフィールドで構成されています。

例5-5 NonCatalogLoggerの出力

####<May 27, 2004 8:45:42 AM EDT> <Error> <MySubsystem> <myhost> <adminServer>
<ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <system>
<> <> <1085661942864> <OBJ-0011> <Test NonCatalogLogger message
java.lang.Exception: Test NonCatalogLogger message
...
>

ServletContextの使用

サーブレット仕様は、サーブレットおよびJSPがWebLogicサーバー・ログにシンプル・メッセージを書き込むために使用できるjavax.servlet.ServletContext内の以下のAPIを提供します。

- log(java.lang.String msg)

- log(java.lang.String msg, java.lang.Throwable t)

これらのAPIの使用の詳細は、javax.servlet.ServletContextインタフェースのJavadoc(http://download.oracle.com/docs/cd/E17802_01/products/products/servlet/2.3/javadoc/javax/servlet/ServletContext.html)を参照してください。

例5-6に、ServletContextを使用したJSPロギングを示します。

例5-6 JSPロギング例

<%@ page language="java" %>
<!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title>INDEX</title>
</head>
<body bgcolor="#FFFFFF">
<%
config.getServletContext().log("Invoked ServletContext.log() From a JSP");
out.write("Request param arg0 = " + request.getParameter("arg0"));
%>
</body>
</html>

サーブレットとリソース・アダプタのロギングの構成

このリリースのWebLogic Serverでは、WebLogic固有のデプロイメント記述子を使用して、Webアプリケーションとリソース・アダプタのロギングの動作を構成できます。ロギング構成のデプロイメント記述子要素では、ログ・ファイルの名前、場所、ローテーション・ポリシーなど、LogMBeanインタフェースでサーバーのロギングを構成する場合と同じような属性を定義します。

構成時に、アプリケーション・イベントはWebアプリケーション固有のログ・ファイルに送られます。デプロイメント記述子に、ロギング構成情報が含まれていない場合、デフォルトの動作は、これらのイベントをサーバー・ログ・ファイルに書き込むことです。

同様に、WebLogicロギング・サービスはJava EEリソース・アダプタにも対応しており、ManagedConnectionFactoryスコープのロギングを行えます。weblogic-ra.xmlデプロイメント記述子を使用して、リソース・アダプタ・ログのログ・ファイル名、場所およびローテーション・ポリシーを構成します。Oracle WebLogic Serverリソース・アダプタのプログラミングのweblogic-ra.xmlスキーマに関する項を参照してください。

例:ロギング構成のデプロイメント記述子

例5-7に、Webアプリケーションおよびリソース・アダプタのロギングにおけるロギング動作の構成のためのデプロイメント記述子を断片的に示します。loggingの要素は、LogMBeanインタフェースの属性定義に対応します。この例に、すべてのLogMBean属性がリストされているわけではありません。ロギング構成は、Webアプリケーションの場合はWEB-INF/weblogic.xmlファイル内で、リソース・アダプタの場合はMETA-INF/weblogic-ra.xmlファイル内で定義されています。

例5-7 Webアプリケーションおよびコネクタのロギングの構成

<!DOCTYPE weblogic-web-app PUBLIC "//DTD Web Application 9.0//EN"
"http://www.bea.com/servers/wls90/dtd/weblogic90-web-jar.dtd">
<weblogic-web-app>
<logging>
<log-filename>d:\tmp\mywebapp.log</log-filename>
<rotation-type>bySize</rotation-type>
<number-of-files-limited>true</number-of-files-limited>
<file-count>3</file-count>
<file-size-limit>50</file-size-limit>
<rotate-log-on-startup>true</rotate-log-on-startup>
<log-file-rotation-dir>config/MedRecDomain/WebApp</log-file-rotation-dir>
</logging>
</weblogic-web-app>
<weblogic-connector xmlns="http://www.bea.com/ns/weblogic/90">
<jndi-name>eis/900BlackBoxNoTxConnector</jndi-name>
<outbound-resource-adapter>
<connection-definition-group>
<connection-factory-interface>javax.sql.DataSource</connection-factory-interface>
<connection-instance>
<jndi-name>eis/900BlackBoxNoTxConnectorJNDINAME</jndi-name>
<connection-properties>
<pool-params>
<initial-capacity>5</initial-capacity>
<max-capacity>10</max-capacity>
<capacity-increment>1</capacity-increment>
<shrinking-enabled>true</shrinking-enabled>
<shrink-frequency-seconds>60</shrink-frequency-seconds>
<highest-num-waiters>1</highest-num-waiters>
<highest-num-unavailable>3</highest-num-unavailable>
<connection-reserve-timeout-seconds>11</connection-reserve-timeout-seconds>
</pool-params>
<logging>
<log-filename>900BlackBoxNoTxOne.log</log-filename>
<logging-enabled>true</logging-enabled>
<rotation-type>bySize</rotation-type>
<number-of-files-limited>true</number-of-files-limited>
<file-count>3</file-count>
<file-size-limit>100</file-size-limit>
<rotate-log-on-startup>true</rotate-log-on-startup>
<log-file-rotation-dir>c:/mylogs</log-file-rotation-dir>
<rotation-time>3600</rotation-time>
<file-time-span>7200</file-time-span>
</logging>
<properties>
<property>
<name>ConnectionURL</name>
<value>jdbc:oracle:thin:@bcpdb:1531:bay920</value>
</property>
<property>
<name>unique_ra_id</name>
<value>blackbox-notx.oracle.810</value>
</property>
</properties>
</connection-properties>
</connection-instance>
</connection-definition-group>
</outbound-resource-adapter>
</weblogic-connector>

クライアント・アプリケーションからのメッセージの書込み

アプリケーションがWebLogic Serverから離れたJVMで実行される場合、メッセージ・カタログおよびNonCatalogLoggerは使用できますが、メッセージはWebLogicサーバー・ログには書き込まれません。かわりに、アプリケーションのメッセージはクライアントJVMの標準出力に書き込まれます。

WebLogicロギング・サービスで、クライアントJVMマシンが保持するログ・ファイルにメッセージを送る場合は、クライアントJVMを起動するコマンドで次の引数を指定します。

-Dweblogic.log.FileName=logfilename

logfilenameは、リモート・ログ・ファイルの名前です。

メッセージ・カタログのサブセットとNonCatalogLoggerメッセージをリモートJVMログ・ファイルと標準出力に送る場合は、さらに次の起動引数を指定します。

-Dweblogic.log.StdoutSeverityLevel=String

ここで、StdoutSeverityLevelの有効な値は次のとおりです。

Debug、Info、Warning、Error、Notice、Critical、Alert、Emergency、およびOff。

サポートされている重大度については、「weblogic.logging.Severities」クラスを参照してください。

デバッグ・メッセージの書込み

アプリケーションの開発中、そのアプリケーションの低レベル・アクティビティを示すメッセージを作成および使用できると便利です。DEBUG重大度を使用すると、これらの低レベル・メッセージを分類できます。アプリケーションが生成するすべてのDEBUGメッセージが、構成された最低限のしきい値の重大度に応じて、すべてのWebLogicサーバー・ロギング宛先に送信されます。

DEBUG重大度を使用する場合、アプリケーション用の「デバッグ・モード」を作成することをお薦めします。たとえば、アプリケーションがブール値を格納するオブジェクトを作成できるとします。デバッグ・モードを有効または無効にするには、ブール値を切り替えます。次に、DEBUGメッセージごとに、アプリケーションのデバッグ・モードが有効化されている場合にのみメッセージを出力するラッパーを作成します。

たとえば、次のコードでデバッグ・メッセージを生成できます。

private static boolean debug = Boolean.getBoolean("my.debug.enabled");
if (debug) {
mylogger.debug("Something debuggy happened");
}

この種のラッパーは、メッセージ・カタログ・フレームワークを使用するDEBUGメッセージとNonCatalogLogger APIを使用するDEBUGメッセージの両方に対して使用できます。

アプリケーションでこのメッセージを出力できるようにするには、アプリケーションのJVMを起動するときに次のJavaオプションを使用します。

-Dmy.debug.enabled=true

6 WebLogic Serverメッセージ・エディタの使い方

以下の節では、メッセージ・エディタの使用方法について説明します。

- メッセージ・エディタの概要

- メッセージ・エディタの起動

- カタログに関する作業

- カタログへのメッセージの追加

- メッセージの検索

- メッセージ・ビューアの使い方

- 既存のメッセージの編集

- メッセージのリタイアとリタイア解除

メッセージ・エディタの概要

メッセージ・エディタは、XMLメッセージ・カタログの作成、読み込み、および書込みに使用するグラフィカル・インタフェース・ツールです。メッセージ・エディタは、WebLogic Serverのインストール時にインストールされます。必要に応じて、XMLカタログはテキスト・エディタまたは任意のXML編集ツールで編集することもできます。

注意:
WebLogic Serverには独自のメッセージ・カタログがあり、WebLogic Serverのサブシステムおよび機能に関連するメッセージがすべて含まれます。これらのカタログは、編集できません。WebLogic Serverのカタログの詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverメッセージ・カタログ』の「WebLogic Serverメッセージ・カタログ」を参照してください。

メッセージ・エディタで可能な作業は以下のとおりです。

- XMLメッセージ・カタログを作成します

- メッセージを作成および編集します

- 1つのカタログのすべてのメッセージを表示します

- 複数のカタログのメッセージを同時に表示します

- メッセージを検索します

- カタログ・エントリでXMLの有効性を検証します

- メッセージをリタイア、およびリタイア解除します

注意:
メッセージ・エディタは、ローカライズされたカタログの編集はサポートしていません。

メッセージ・エディタの起動

メッセージ・エディタを起動する前に、WebLogic Serverシステムのインストールと構成を行い、環境変数SAMPLES_HOME\domains\wl_server\setExamplesEnv.cmdを設定します。SAMPLES_HOMEはWebLogic Serverのサンプル・ホーム・ディレクトリ(WL_HOME\samples)を示します。また、クラスパスの設定が正しいことを確認してください。これらの点の詳細は、Oracle WebLogic Serverインストレーション・ガイドを参照してください。

サンプルのメッセージ・カタログ・ファイルは、SAMPLES_HOME/server/examples/src/examples/i18n/msgcatディレクトリにあります。

注意:
SAMPLES_HOMEディレクトリの場所は、WebLogic Serverのインストール先によって異なる場合があります。

このサンプルのメッセージ・カタログをテンプレートとして使用し、独自のメッセージを作成できます。パッケージ名、クラス名などの与えられた情報を変更するだけです。次に、メッセージ・テキストを翻訳し、カタログを保存します。このトピックの詳細は、第5章「WebLogic Serverログへのメッセージの書込み」を参照してください。

メッセージ・エディタを起動するには、次のように入力します。

java weblogic.MsgEditor

または

java weblogic.i18ntools.gui.MessageEditor

基本的なコマンド・ライン・ヘルプにアクセスするには、次のコマンドを入力します。

java weblogic.MsgEditor -help

ログ・メッセージ用のWebLogicメッセージ・エディタのメイン・ウィンドウが図6-1のように表示されます。

図6-1 ログ・メッセージ用WebLogicメッセージ・エディタ

「図6-1 ログ・メッセージ用WebLogicメッセージ・エディタ」の説明

カタログに関する作業

以下の節では、メッセージ・エディタをカタログ管理に使用する方法について説明します。

- 既存のカタログの参照

- 新規カタログの作成

既存のカタログの参照

WebLogicメッセージ・エディタのメイン・ウィンドウから、既存のカタログを検索するには、「メッセージ・カタログ」フィールドにフルパス名を入力するか、「参照」をクリックして「開く」ダイアログから既存のカタログに移動します。

図6-2 カタログへのアクセス

「図6-2 カタログへのアクセス」の説明

WebLogic Serverのインストールに付属しているサンプル・カタログは、SAMPLES_HOME/server/examples/src/examples/i18n/msgcatディレクトリにあります。

注意:
ディレクトリ・パスは、WebLogic Serverのインストール先によって異なる場合があります。

ユーザー定義のカタログは、任意のディレクトリを指定して配置できます。

カタログの場所を指定すると、「パッケージ」、「サブシステム」、「バージョン」、および「開始ID」と「終了ID」(ある場合)が表示され、その表示されたカタログが、他のすべてのアクションが実行されるコンテキスト・カタログになります。

この時点で、カタログでは、新しいメッセージの入力、既存のメッセージの編集、メッセージの検索、またはすべてのメッセージの表示を行うことができます。

「メッセージ・カタログ」フィールドで、ログ・メッセージ・カタログを選択した場合、図6-3に示されているようなログ・メッセージ用のWebLogicメッセージ・エディタ・ウィンドウが表示されます。

図6-3 ログ・メッセージ用WebLogicメッセージ・エディタ

「図6-3 ログ・メッセージ用WebLogicメッセージ・エディタ」の説明

「メッセージ・カタログ」フィールドで、シンプル・メッセージ・カタログを選択した場合、図6-4に示されているようなシンプル・メッセージ用のWebLogicメッセージ・エディタ・ウィンドウが表示されます。

図6-4 シンプル・メッセージ用WebLogicメッセージ・エディタ

「図6-4 シンプル・メッセージ用WebLogicメッセージ・エディタ」の説明

新規カタログの作成

新規カタログを作成するには、次の手順に従います。

1. WebLogicメッセージ・エディタ・ウィンドウのメイン・メニュー・バーから「ファイル」>「新しいカタログの開始」を選択します。
図6-5に示すように、「新しいカタログを作成」ダイアログが表示されます。

図6-5 「新しいカタログを作成」ダイアログ

「図6-5 「新しいカタログを作成」ダイアログ」の説明

1. [メッセージ・カタログ]フィールドに、新規カタログ(拡張子xmlを含むファイル)のフルパス名と名前を入力します。または、[参照]をクリックして、適切なカタログ・ディレクトリに移動します(WebLogic Serverのサンプル・メッセージを使用している場合は、msgcatディレクトリに移動します)。

2. 「カタログ・タイプ」ドロップダウン・リストを使用して、作成するカタログが、ログ・メッセージ(Log messages)カタログ、シンプル・テキスト・メッセージ(Simple messages)カタログのどちらになるのかを指定します。
ログ・メッセージ・カタログを選択した場合は、「開始ID」および「終了ID」フィールドが表示されます。この2つのフィールドは、カタログ内のメッセージに使用するID番号の範囲を指定するものです。シンプル・テキスト・メッセージ・カタログを選択した場合は、これらのフィールドは表示されません。

3. 生成されたLoggerクラスを入れるパッケージの名前を「I18nパッケージ」フィールドに入力します。
デフォルト値はweblogic.i18nです。Loggerクラスをアプリケーションと共に別のパッケージに入れたい場合は、ここでそのパッケージ名を指定します。

4. カタログ・データを入れるパッケージの名前を「L10nパッケージ」フィールドに入力します。
デフォルト値はweblogic.l10nです。カタログ・データをアプリケーションと共に別のパッケージに入れる場合は、ここでそのパッケージ名を指定します。

注意:
ほとんどの場合は、メッセージのクラス・ファイルとプロパティ・ファイルはアプリケーションと同じパッケージ階層に配置することをお薦めします。
メッセージのクラスとプロパティをアプリケーションのパッケージ階層に含めない場合は、クラスが必ずアプリケーションのクラスパスに存在するようにする必要があります。

5. 「サブシステム」フィールドに、メッセージをログに記録するシステムの部分を示す名前を入力します。
この名前がメッセージと共にログに書き込まれます。アプリケーションの場合、通常、「サブシステム」フィールドにはそのアプリケーション名が入ります。

6. 「接頭辞」フィールドに、ログに記録されるときにメッセージIDの先頭に追加する接頭辞を入力します。
デフォルトのサーバー・メッセージの接頭辞は、BEAです。ユーザー・メッセージに、任意の接頭辞を入力できます(接頭辞は、10文字未満にすることをお薦めします。また、標準的なJavaネーミング・ルールを使用してください)。

7. 「カタログを作成」をクリックします。
「新しいカタログを作成」ダイアログが閉じ、今作成したカタログが、メッセージ・エディタのウィンドウにコンテキスト・カタログとして表示されます。

カタログへのメッセージの追加

以下の節では、メッセージ・エディタを使用してカタログにメッセージを追加する方法について説明します。

- 新規ログ・メッセージの入力

- 新規シンプル・テキスト・メッセージの入力

新規ログ・メッセージの入力

ログ・カタログに新規メッセージを入力するには:

1. WebLogicメッセージ・エディタのメイン・ダイアログ(図 6-6)で、「メッセージ・カタログ」フィールドにフルパス名を入力するか、「参照」をクリックして既存のカタログに移動します。

図6-6 ログ・メッセージ

「図6-6 ログ・メッセージ」の説明

1. 「次のIDを取得」ボタンをクリックして、コンテキスト・カタログ内で次の一意のIDを生成します。
IDは、「メッセージID」フィールドに表示されます。

2. メッセージに関連するコメントを、「コメント」フィールドに入力します。

3. カッコと引数も含めて、ログ・メッセージに使用する適切なメソッドを入力します。例: logErrorSavingTimestamps(Exception ioExcep)

4. ログ・メッセージのメソッド・タイプを設定します。
選択肢はloggerまたはgetterです。デフォルトのメソッド・タイプはloggerで、ログとして記録されるメッセージに使用します。getterは、例外など、ログとして記録しないメッセージに使用する場合に選択します。

5. リストから「重大度」を選択します。

6. 「メッセージ本文」にテキストを入力します。
パラメータは{n}で示します。例: "Exception occurred while loading _WL_TIMESTAMP FILE."

7. 「メッセージ詳細」にテキストを入力します。
パラメータは{n}で示します。例:"Exception occurred while loading _WL_TIMESTAMP FILE.Forcing recompilation: {0}."

8. 「妥当な原因」にテキストを入力します。
パラメータは{n}で示します。例: "There was an error reading this file."

9. 「アクション」にテキストを入力します。
パラメータは{n}で示します。例: "No action required."

10. 「スタック・トレースを表示」オプションを、チェック・ボックスをチェックするか、チェックをはずして、切り替えます。
このオプションは、Loggerメソッドが例外を引数として取る場合に、メッセージと共にスタック・トレースを出力するときに使用します。

11. 「リタイアされたメッセージ」オプションを、チェック・ボックスをチェックするか、チェックをはずして、切り替えます。
使用しなくなったメッセージをリタイア(非表示に)するには、このオプションを使用します。リタイアされたメッセージは、生成されたクラスに表示されないという観点では削除されます。ただし、メッセージ・データは.xmlファイルに残ります。

12. 「追加」をクリックします。
メッセージが追加されると、カタログ全体が直ちにディスクに書き込まれます。

新規シンプル・テキスト・メッセージの入力

シンプル・メッセージ・カタログにシンプル・テキスト・メッセージを入力するには:

1. WebLogicメッセージ・エディタのメイン・ダイアログで、「メッセージ・カタログ」フィールドにフルパス名を入力するか、「参照」をクリックして既存のカタログに移動します。
図6-7に示されているようなシンプル・メッセージ用のWebLogicメッセージ・エディタのダイアログが表示されます。

図6-7 シンプル・メッセージ用ウィンドウ

「図 6-7シンプル・メッセージ用ウィンドウ」の説明

1. 一意の英数字のメッセージIDを入力します。

2. 必要に応じて、コメントを入力します。

3. カッコと引数も含めて、シンプル・メッセージに使用する適切なメソッドを入力します。例: startingClusterService()

4. メッセージ本文を入力します。例: startingClusterService

5. 「追加」をクリックします。
メッセージが追加されると、カタログ全体が直ちにディスクに書き込まれます。

メッセージの検索

以下の節では、メッセージ・エディタをメッセージ検索に使用する方法について説明します。

- ログ・メッセージの検索

- シンプル・テキスト・メッセージの検索

ログ・メッセージの検索

ログ・メッセージを検索するには:

1. コンテキスト・カタログがログ・メッセージ・カタログであること、図6-3に示されているようにWebLogicメッセージ・エディタのログ・メッセージのウィンドウが表示されていることを確認します。

2. メイン・メニュー・バーから「編集」を選択します。

3. 「検索」を選択して、図6-8に示すような「ログ・メッセージを検索」ダイアログを表示します。

図6-8 ログ・メッセージの検索

「図6-8 ログ・メッセージの検索」の説明

1. メッセージIDおよびメソッド名を入力します。

2. 「メッセージ・テキスト検索」フィールドに、求めるメッセージの検索データを必要なだけ入力します。
テキストの検索では、テキスト・フィールドに入力されたすべての内容について部分一致検索が行われます。

3. 「先頭から検索」または「次を検索」をクリックします。
メッセージの検索は、フィールドの情報をつなぎ合わせて実行されます。一致するメッセージが見つかると、図6-1に示されているように、そのメッセージがメッセージ・エディタのウィンドウに表示されます。

シンプル・テキスト・メッセージの検索

シンプル・テキスト・メッセージを検索するには、次の手順に従います。

1. コンテキスト・カタログがシンプル・テキスト・メッセージ・カタログであること、図6-4に示されているようにWebLogicメッセージ・エディタのシンプル・メッセージのウィンドウが表示されていることを確認します。

2. メイン・メニュー・バーから「編集」を選択します。

3. 「検索」を選択して、図6-9に示すような「シンプル・メッセージを検索」ダイアログを表示します。

図6-9 シンプル・メッセージの検索

「図6-9 シンプル・メッセージの検索」の説明

1. メッセージIDを入力します。

2. 「メッセージ・テキスト検索」フィールドに、求めるメッセージの検索データを必要なだけ入力します。
テキストの検索では、テキスト・フィールドに入力されたすべての内容について部分一致検索が行われます。

3. 「先頭から検索」または「次を検索」をクリックします。
メッセージの検索は、フィールドの情報をつなぎ合わせて実行されます。一致するメッセージが見つかると、図6-4に示されているように、そのメッセージがメッセージ・エディタのウィンドウに表示されます。

メッセージ・ビューアの使い方

WebLogicメッセージ・エディタには、メッセージ・ビューアが付属しており、このビューアを使えば、1つのカタログ内の全メッセージおよび複数のカタログ内の全メッセージを表示すること、さらに任意のメッセージを選択して編集することができます。

以下の節では、メッセージ・ビューアを使用して、メッセージを表示する方法、およびメッセージを選択して編集する方法を説明します。

- 1つのカタログ内の全メッセージの表示

- 複数のカタログ内の全メッセージの表示

- メッセージ・ビューアからの編集対象メッセージの選択

1つのカタログ内の全メッセージの表示

1つのカタログ内のすべてのメッセージを表示する手順は次のとおりです。

1. WebLogicメッセージ・エディタを開きます。
WebLogicメッセージ・エディタのウィンドウに、最後に表示したメッセージのカタログが、現在のコンテキスト・カタログとして表示されます。

2. メニュー・バーから「表示」を選択します。

3. 「すべてのメッセージ」を選択します。
現在のコンテキスト・カタログのすべてのメッセージが、図6-10に示されているように「メッセージ・ビューア」ウィンドウに表示されます。メッセージ・エディタのウィンドウは開いたままです。

図6-10 メッセージ・ビューア

「図6-10 メッセージ・ビューア」の説明

複数のカタログ内の全メッセージの表示

現在のコンテキスト・カタログからメッセージを表示し、次に新しいカタログに移動してコンテキストを変更すると、別の「メッセージ・ビューア」ウィンドウが開いて、新しいカタログが表示されます。必要な(または画面に表示が収まるかぎりの)数のカタログを同時に表示できます。カタログごとに別々の「メッセージ・ビューア」ウィンドウが表示されます。新規カタログの参照の詳細は、「既存のカタログの参照」を参照してください。

メッセージ・ビューアからの編集対象メッセージの選択

メッセージ・ビューアに表示される任意のメッセージを選択すると、その選択されたメッセージがコンテキスト・カタログとなります。メッセージは、メッセージ・エディタのウィンドウに表示されます。

図6-11 メッセージ909001に対するメッセージ・ビューアとメッセージ・エディタ

「図6-11 メッセージ909001に対するメッセージ・ビューアとメッセージ・エディタ」の説明

既存のメッセージの編集

既存のメッセージを編集するには:

1. 編集するメッセージを見つけます。
「ログ・メッセージの検索」および「シンプル・テキスト・メッセージの検索」に記載されているように「検索」ダイアログを使用しても、「メッセージ・ビューアからの編集対象メッセージの選択」に示されているようにメッセージ・ビューアでメッセージを選択してもかまいません。

メッセージは、メッセージ・エディタのウィンドウに表示されます。

2. 変更するフィールドを編集します。

3. 「更新」をクリックします。
メッセージが更新され、カタログ全体が直ちにディスクに書き込まれます。

メッセージのリタイアとリタイア解除

メッセージ・エディタのウィンドウで、メッセージのリタイアおよびリタイア解除ができます。メッセージをリタイアしても、そのメッセージはマスタ・カタログからは削除されません。ユーザーから見えなくなるだけです。この機能は、使用しなくなったメッセージを削除する場合に役立ちます。リタイアしたメッセージを再び表示する必要がある場合は、リタイア解除できます。

メッセージをリタイア、またはリタイア解除するには、次の手順に従います。

1. リタイアまたはリタイア解除するメッセージを見つけます。

2. メッセージ・エディタのウィンドウで、「リタイアされたメッセージ」オプションを、チェック・ボックスをチェックするか、チェックをはずして、切り替えます。

3. 「更新」をクリックします。

7 WebLogic Server国際化ユーティリティの使い方

以下の節では、国際化およびローカライゼーションに使用されるWebLogic Serverユーティリティに関する情報を記述します。

- WebLogic Server国際化ユーティリティ

- WebLogic Server国際化およびローカライゼーション

- weblogic.i18ngenユーティリティ

- weblogic.l10ngenユーティリティ

- weblogic.GetMessageユーティリティ

WebLogic Server国際化ユーティリティ

WebLogic Serverでは、以下の3つの国際化ユーティリティが用意されています。

- weblogic.i18ngenユーティリティ: メッセージ・カタログのパーサー。このユーティリティは、ログ・メッセージ内のテキストのローカライズに使用されるクラスの検証および生成に使用します。詳細は、「weblogic.i18ngenユーティリティ」を参照してください。

- weblogic.l10ngenユーティリティ: ロケール固有のメッセージ・カタログのパーサー。このユーティリティは、ロケール固有のカタログの処理に使用します。詳細は、「weblogic.l10ngenユーティリティ」を参照してください。

- weblogic.GetMessageユーティリティ: 組み込まれているログ・メッセージのリストを生成するユーティリティ。このユーティリティは、組み込まれているログ・メッセージのリストの生成およびメッセージの表示に使用します。詳細は、「weblogic.GetMessageユーティリティ」を参照してください。

注意:
カタログ定義のテキストでは読みやすいように書式設定文字(行末文字など)が使用される場合がありますが、それらの文字はパーサーでは維持されません。テキスト・データは、1行の文字列に標準化されます。先頭と末尾のホワイト・スペースはすべて削除されます。埋め込まれている行末文字は、単語の区切りを維持するために必要に応じてスペースに置き換えられます。タブはそのまま残されます。
エスケープは、埋め込まれている改行('\n'など)に使用します。保存され、出力すると改行として出力されます。

WebLogic Server国際化およびローカライゼーション

weblogic.i18ngenユーティリティを使用すると、メッセージ・カタログを検証し、ローカライズされたメッセージの生成に必要な実行時クラスを作成できます。weblogic.l10ngenユーティリティを使用すると、ロケール固有のカタログを検証し、カタログで定義された様々な異なるロケールで使用される追加のプロパティ・ファイルを作成できます。

WebLogic Serverで実行しているシンプル・テキスト・ベースのユーティリティは、それらのユーティリティでテキスト・データのアクセスにLocalizerを使用するように指定することにより、国際化できます。weblogic.i18ngenユーティリティから生成されたLoggerおよびTextFormatterクラスを使用して、アプリケーションを構成します。

LoggerクラスおよびTextFormatterクラスの詳細は、「付録C WebLogic Server用のTextFormatterクラスのリファレンス」および「D WebLogic Server用のLoggerクラスのリファレンス」を参照しください。

生成されたLoggerクラスは、英語のテキストをログに書き込む従来の方法にかわるログ記録の手段として使用されます。たとえば、weblogic.i18ngenでは、カタログxyz.xmlに対して適切なパッケージにクラスxyzLoggerが生成されます。また、MyUtilLog.xmlカタログでは、クラスprograms.utils.MyUtilLogger.classが生成されます。カタログで定義されているログ・メッセージごとに、このクラスではmethod属性で定義されているとおりに静的なパブリック・メソッドが格納されます。

TextFormatterクラスは、シンプル・メッセージ・カタログごとに生成されます。これらのクラスには、カタログのローカライズおよびフォーマットされたテキストにアクセスするために使用するメソッドがあります。このクラスは、メッセージ本文、プレースホルダー、およびMessageFormatとのインタフェースを処理するコンビニエンス・クラスです。フォーマット用メソッドは、各メッセージ定義のmethod属性により指定します。たとえば、あるカタログのメッセージ定義に属性method=getErrorNumber(int err)が指定されている場合、例7-1に示されているTextFormatterクラスが生成されます。

例7-1 TextFormatterクラスの例

package my.text;
public class xyzTextFormatter
{
. . .
public String getErrorNumber(int err)
{
. . .
}
}

例7-2は、getErrorNumberメソッドのコードでの使用例を示します。

例7-2 getErrorNumberメソッドの例

import my.text.xyzTextFormatter
. . .

xyzTextFormatter xyzL10n = new xyzTextFormatter();
System.out.println(xyzL10n.getErrorNumber(someVal));

この場合、someVal引数が適切に挿入された状態で現在のロケールのメッセージ・テキストが出力されます。

weblogic.i18ngenユーティリティ

weblogic.i18ngenユーティリティを使用すると、メッセージ・カタログ(XMLファイル)を解析し、ログ・メッセージのテキストをローカライズするためのLoggerクラスおよびTextFormatterクラスを生成できます。このユーティリティでは、次のプロパティ・ファイル(メッセージIDのルックアップ・クラス・ハッシュ表weblogic.i18n.L10nLookupのロードに使用)が作成、または更新されます。

targetdirectory\i18n_user.properties

エラーや警告などのメッセージはすべてstderrに送信されます。

ユーザー・カタログが認識されるように、i18n_user.propertiesファイルはWebLogicクラスパスで識別されたディレクトリに置く必要があります。

例: targetdirectory\i18n_user.properties

i18n_user.propertiesファイルは、サーバー・クラスパスに置くようにお薦めします。i18n_user.propertiesファイルがtargetdirectoryにある場合は、targetdirectoryがサーバー・クラスパスにある必要があります。

構文

java weblogic.i18ngen [options] [filelist]

注意:
ユーティリティはどのディレクトリからでも実行できますが、ファイルがコマンド・ラインで指定される場合、ファイル・パスはカレント・ディレクトリに対する相対パスになります。

オプション

オプション

定義

-build

必要なすべてのファイルを生成し、コンパイルします。
-buildオプションは、-i18n、-l10n、-keepgenerated、-compileの各オプションを組み合せたものです。

-d targetdirectory

生成されたJavaソース・ファイルの宛先となるルート・ディレクトリを指定します。ユーザー・カタログ・プロパティは、指定されたターゲット・ディレクトリの相対パスにある i18n_user.propertiesに配置されます。ファイルは、メッセージ・カタログのi18n_package値およびl10n_package値に基づいて適切なディレクトリに配置されます。デフォルトのターゲット・ディレクトリは現在のディレクトリとなります。このディレクトリは必要に応じて作成されます。
この引数が省略された場合は、メッセージ・カタログに指定されたクラス階層に関係なく、すべてのクラスがカレント・ディレクトリに生成されます。

-n

解析し、有効性を検証しますが、クラスは生成しません。

-keepgenerated

生成されたJavaソース(クラス・ファイルと同じディレクトリに存在)を保持します。

-ignore

エラーを無視します。

-i18n

インターナショナライザ(Loggers、TextFormattersなど)を生成します。
i18ngen -i18nでは、国際化されたメッセージのロギングをサポートするインターナショナライザ・ソース(*Logger.javaなど)が作成されます。

-l10n

localizers(LogLocalizers、TextLocalizersなど)を生成します。
i18ngen -l10nでは、メッセージ・カタログで定義されている各メッセージにアクセスできるようにするローカライザ・ソース(リソースのまとまり)が作成されます。これらのクラスは、メッセージをローカライズするためにローカライゼーション・ユーティリティによって使用されます。

-compile

現在のCLASSPATHを使用して生成されたJavaファイルをコンパイルします。生成されたクラスは、-dオプションで識別されるディレクトリに配置されます。生成されたクラスは、ソースと同じディレクトリに配置されます。
通常は、コンパイルの途中でエラーが検出されると、クラス・ファイルやプロパティ・ファイルが作成されません。i18ngenは異常な終了ステータスで終了します。

-nobuild

解析と有効性の検証のみを実行します。

-debug

デバッグ・モード。

-dates

weblogic.i18ngenに、カタログ内のメッセージ・タイムスタンプを更新させます。カタログが書込み可能でタイムスタンプが更新された場合、カタログは上書きされます。

filelist

このファイル・リストのファイルとディレクトリを処理します。ディレクトリが指定されている場合は、そのディレクトリのすべてのXMLファイルが処理されます。すべてのファイルの名前には、XMLの接尾辞が付いている必要があります。すべてのファイルはmsgcat.dtd構文に準拠している必要があります。weblogic.i18ngenは、実際に生成されたファイルに対して、完全修飾名リスト(Javaソース)をstdoutログに出力します。

weblogic.l10ngenユーティリティ

weblogic.l10ngenユーティリティは、ファイル・リストで指定されたメッセージ・カタログをローカライゼーションするためのプロパティ・リソースを生成します。ファイル・リストでは、翻訳されたカタログではなく、最上位カタログが識別されます。

同様に、ターゲット・ディレクトリ(-dオプション)は、デフォルトのローカライゼーションが置かれた同一のターゲット・ディレクトリを識別します。たとえば、デフォルト・カタログが$SRC\weblogic\msgcatにあり、生成されたリソースを$CLASSESDIRに置く場合、l10ngenを適切に呼び出すコマンドは次のようになります。

java weblogic.l10ngen -d $CLASSESDIR $SRC\weblogic\msgcat

このコマンドでは、定義されたすべてのロケールに対するローカライズされたリソースが、weblogic\msgcatサブディレクトリに生成されます。

構文

java weblogic.l10ngen [options] [filelist]

注意:
ユーティリティはどのディレクトリからでも実行できますが、ファイルがコマンド・ラインで指定される場合、ファイル・パスはカレント・ディレクトリに対する相対パスになります。

オプション

オプション

定義

-d target

プロパティを配置するディレクトリ。デフォルトはカレント・ディレクトリ。

-language code

言語コード。デフォルト値はallです。

-country code

国コード。デフォルト値はallです。

-variant code

バリアント・コード。デフォルト値はallです。

filelist

プロパティ・ファイルを生成するメッセージ・カタログを指定します。メッセージ・エディタで作成される最上位のカタログを指定する必要があります。メッセージ・ローカライザで作成される特定ロケールのカタログは指定しません。通常は、i18ngenコマンドで指定したものと同じソース・ファイルまたはソース・ディレクトリ。

メッセージ・カタログのローカライゼーション

カタログ・サブディレクトリの名前は、小文字2文字のISO 639言語コード(日本語はja、フランス語はfrなど)に基づいて付けられます。サポートされている言語コードは、java.util.Locale javadocで確認できます。

言語コードのバリエーションは、言語コードの下位にある大文字2文字のISO 3166国コードとバリアントを使用するとできます。一般的な構文は、lang\country\variantです。

たとえば、zhは中国の言語コードです。CNは簡体字中国語の国コードで、TWは繁体字中国語の国コードです。このため、zh\CNおよびzh\TWは中国語の異なる2つのロケールです。

バリアントは、特定のロケールを扱うプラットフォーム・ベンダーの機能に違いがある場合などに役立ちます。ベンダー・バリアントには、WIN、MAC、POSIXなどがあります。ロケールをさらに修飾するために2つのバリアントが使用される場合もあります。この場合、バリアントはアンダースコアで区切ります(Traditional_MacとModern_MACなど)。

注意:
言語、国、およびバリアントは、すべて大文字/小文字が区別されます。

完全修飾ロケールはzh\TW\WINのようになり、Win32プラットフォームでの繁体字中国語を識別します。

上記のロケールをサポートするメッセージ・カタログには、次のファイルが含まれます。

- \*.xml - デフォルト・カタログ

- \zh\*.xml - 中国語ローカライゼーション

- \zh\TW\*.xml - 繁体字中国語ローカライゼーション

- \zh\TW\WIN\*.xml - Win32コード・セットに対する繁体字中国語ローカライゼーション

特定のローカライゼーションは、親ローカライゼーションで定義されたすべてのメッセージに対応する必要はありません。

例

1. すべてのロケールに対するローカライゼーション・プロパティを生成するには、次のコマンドを実行します。

java weblogic.l10ngen -d $CLASSESEDIR catalogdirectory

2. すべての繁体字中国語ロケールに対するローカライゼーション・プロパティを生成するには、次のコマンドを実行します。

java weblogic.l10ngen -d $CLASSESEDIR -language zh -country TW catalogdirectory

3. すべての中国語ロケールに対するローカライゼーション・プロパティを生成するには、次のコマンドを実行します。

java weblogic.l10ngen -d $CLASSESEDIR -language zh catalogdirectory

4. すべてのロケールでJMSカタログに対するローカライゼーション・プロパティを生成するには、次のコマンドを実行します。

java weblogic.l10ngen -d $CLASSESEDIR catalogdirectory

注意:
例2は例3のサブセットです。すべての中国語(zh)には、任意の国指定(TWなど)およびバリアントが含まれます。
weblogic.l10ngenは、ロケール識別子(言語、国、バリアント)を検証しません。

weblogic.GetMessageユーティリティ

weblogic.GetMessageユーティリティは、以前のバージョンのWebLogic Serverで提供されたCatInfoユーティリティにかわるユーティリティです。このユーティリティはメッセージ・コンテンツを表示しますが、インストールされたすべてのメッセージ、または一部のメッセージを一覧表示するためにも使用できます。デフォルト(オプションなし)では、weblogic.GetMessageは使用方法を出力します。

構文

java weblogic.GetMessage [options]

オプション

注意:
-verboseを除いて、すべてのオプションは1文字に短縮できます。

オプション

定義

-id nnnnnn

nnnnnnはメッセージIDを表します。
-idオプションは特定のメッセージを指定するために使用します。

-subsystem identifier

サブシステムの識別子。-subsystemオプションでは指定されたサブシステムに一致するメッセージだけが出力されます。

-nodetail

詳細でないリストをリクエストし、メッセージのメッセージ本文のみ出力されます。デフォルトでは、重大度、サブシステム、メッセージ詳細、原因、およびアクション情報などの詳細なリストが出力されます。

-verbose

詳細なリストをリクエストします。-verboseオプションを指定すると、パッケージ化、スタック・トレース・オプション、重大度、サブシステム、メッセージ詳細、原因、およびアクション情報も出力されます。

-lang code

使用する言語。たとえば、英語の場合はenです。

-country code

使用する国コード。たとえば、米国の場合はUSです。

-variant code

ロケールに対するバリアント識別子。

-help

ヘルプ情報を提供します。

-retired

リタイアされたすべてのメッセージをリストします。リタイアされたメッセージは、このオプションを使用しないと表示されません。メッセージのサブシステムおよびIDのみリストされます。

引数を指定しないと、weblogic.GetMessageは-helpが指定された場合と同様に、使用方法が出力されます。

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

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

- Localizerクラスの概要

- Localizerメソッド

- Localizerのルックアップ・クラス

注意:
このLocalizerクラス・メソッドの情報は、上級ユーザー向けのリファレンスです。通常、このインタフェースを直接使用する必要はありません。一般には、カタログ内の生成されたメソッドを使用します。

Localizerクラスの概要

Localizerは、出力用のテキストをローカライズするためにアプリケーションやサーバー・コードによって使用されるクラスです。weblogic.i18ngenユーティリティでは、メッセージ・カタログの内容に基づいてLocalizerクラスが作成されます。

Localizerクラスは、カタログ・ファイルごとに1つ生成されます。クラスの名前は、カタログ名(.xml拡張子はユーティリティによって削除される)の後に、ログ・メッセージ・カタログの場合はLogLocalizerを、シンプル・テキスト・カタログの場合はTextLocalizerを付けたものです。カタログejb.xmlのLocalizerクラスは、ejbLogLocalizerです。

Localizerメソッド

Localizerは、PropertyResourceBundleオブジェクトです。Localizerでのローカライゼーション・データのアクセスを容易にするために、4つのメソッドが追加されています。これらのメソッドは、以下の表 A-1で説明されています。

これらのメソッドは、Localizerの一部ではありません。正しくはこれらのメソッドは、Localizerクラスの一部です。Localizerクラスは、Localizerのデータを抽出するためにLoggerクラスおよびTextFormatterクラスで使用されます。各Localizerには、L10nLookup(Localizerルックアップ・オブジェクト)で取得されたLocalizerクラスが関連付けられています。

表A-1 ローカライゼーション・データのアクセスに使用されるメソッド

メソッド

説明

public Object getObject(String key, String id)

メッセージidのkey要素に対応するローカライゼーション・テキストを返します。

public Object getObject(String key, int id)

メッセージidのkey要素に対応するローカライゼーション・テキストを返します。

public String getString(String key, String id)

メッセージidのkey要素に対応するローカライゼーション・テキストを返します。

public String getString(String key, int id)

メッセージidのkey要素に対応するローカライゼーション・テキストを返します。

ローカライゼーション・データ・アクセスに使用される各メソッドにはkey引数があります。key引数として識別される値は、以下のとおりです。

- Localizer.SEVERITY

- Localizer.MESSAGE_ID

- Localizer.MESSAGE_BODY

- Localizer.MESSAGE_DETAIL

- Localizer.CAUSE

- Localizer.ACTION

Localizer.SEVERITYキーの場合を除き、Localizerによって返されるローカライゼーション・データは整数型のオブジェクトを返すStringオブジェクトです。

返される重大度の値は、以下のとおりです。

- weblogic.logging.severities.EMERGENCY

- weblogic.logging.severities.ALERT

- weblogic.logging.severities.CRITICAL

- weblogic.logging.severities.NOTICE

- weblogic.logging.severities.ERROR

- weblogic.logging.severities.WARNING

- weblogic.logging.severities.INFO

- weblogic.logging.severities.DEBUG

返される特定の文字列は、メッセージ・カタログで定義されます。

get*()メソッドのkey引数は、定義のどの要素を返すのかを識別します。受け入れられる値は、Localizerクラスの定義で定義されます。返されるテキストは、java.text.MessageFormat.format()によってさらに拡張できます。message body、detail、cause、およびactionの各要素は、すべてローカライズできます。他の要素(message ID、severity、およびsubsystem)はローカライズ可能ではなく、MessageFormatで処理を加える必要もありません。

Localizerのルックアップ・クラス

メッセージに対する正しいLocalizerを取得するには、L10nLookupクラス(システムの起動時に次のプロパティ・ファイルからロードされるプロパティ・クラスの拡張)を使用します。

i18n_user.properties

このプロパティ・ファイルはweblogic.i18ngenによって作成され、インストールされたWebLogic Serverに入っています。ユーザー・アプリケーションを起動すると、そのクラスパスのすべてのi18n_user.propertiesファイルがL10nLookupにもロードされます。

ルックアップ(i18n_user.properties)ファイルのプロパティのフォーマットは次のとおりです。

nnnnnn=subsystem:Localizer class

この行の引数は次のように定義されています。

- nnnnnnはメッセージIDを表します。

- subsystemは関連するサブシステムを表します。

- Localizer classは生成されたLocalizerクラスの名前を表します。

たとえばメッセージ001234は、次のルックアップ・ファイルのプロパティに基づいて、weblogic.i18n.ejbLogLocalizerクラスからのEJBサブシステム・メッセージIDとして識別されます。

001234=EJB:weblogic.i18n.ejbLogLocalizer

B WebLogic Server用のLoggableオブジェクトのリファレンス

以下の節では、Loggableオブジェクトのリファレンス情報を提供します。

- Loggableオブジェクトの概要

- Loggableオブジェクトの使用方法

Loggableオブジェクトの概要

デフォルトでは、すべてのログ・メッセージ・カタログは、メッセージのWebLogicサーバー・ログへの書込みに使用されるメソッドを含むLoggerクラスを作成します。Loggerクラスには、メッセージをログに記録せずに、Loggableオブジェクトを返すメソッドをオプションで組み込むことができます。Loggableオブジェクトは、ログ・メッセージを生成しますが、実際のログへの書込みは後から行う場合に便利です。また、例外のスローなど、他の目的にメッセージ・テキストを使用する場合にも使用できます。

Loggableオブジェクトの使用方法

Loggableオブジェクトを返すメソッドを持つLoggerクラスを作成するには、メッセージ・カタログにloggables属性を設定する必要があります。

例B-1に示すtest.xmlカタログを参照してください。

例B-1 test.xmlメッセージ・カタログ

<?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
subsystem="Examples"
version="1.0"
baseid="500000"
endid="500001"
loggables="true"
>
<logmessage
messageid="500000"
severity="error"
method="logIOError(Throwable t)"
>
<messagebody>
IO failure detected.
</messagebody>
<messagedetail>
</messagedetail>
<cause>
</cause>
<action>
</action>
</logmessage>
</message_catalog>

このカタログをweblogic.i18ngenユーティリティで実行すると、このカタログに対して次の2つのメソッドを持つLoggerクラスが作成されます。

- logIOError (throwable) - メッセージをログに記録する

- logIOErrorLoggable (throwable) - Loggableオブジェクトを返す

Loggableオブジェクトの使用例は、例B-2に示しています。

例B-2 Loggableオブジェクトの使用例

package test;
import weblogic.logging.Loggable;
import weblogic.i18n.testLogger;
...
try {
// some IO
} catch (IOException ioe) {
Loggable l = testLogger.logIOErrorLoggable(ioe);
l.log();  // log the error
throw new Exception(l.getMessage());//throw new exception with
same text as logged
}

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

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

- TextFormatterクラスの概要

- TextFormatterクラスを使用したアプリケーションの例

TextFormatterクラスの概要

TextFormatterクラスは、weblogic.i18ngenによってシンプル・メッセージ・カタログから生成されます。このクラスは、実行時にメッセージ・テキストのローカライズ版の生成に使用されるメソッドを提供します。

TextFormatterクラスを使用したアプリケーションの例

Hello_Worldアプリケーションとそのシンプル・メッセージ・カタログ、およびそのカタログに対して生成されたTextFormatterクラスの例を以下に示します。

例C-1 シンプル・メッセージ・カタログの例

<?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
l10n_package="examples.i18n.simple"
subsystem="I18N"
version="1.0"
>
<message
messageid="HELLO_WORLD"
datelastchanged="967575717875"
method="helloWorld()"
>
<messagebody>
Hello World!
</messagebody>
</message>
<!--  -->
<message
messageid="HELLO_AGAIN"
datelastchanged="967575717804"
method="helloAgain()"
>
<messagebody>
Hello again
</messagebody>
</message>
<!--  -->
<message
messageid="NTH_HELLO"
datelastchanged="967575770971"
method="nthHello(int count)"
>
<messagebody>
This is hello number {0,number}.
</messagebody>
</message>
<!--  -->
<message
messageid="VERSION"
datelastchanged="967578656214"
method="version(String version)"
>
<messagebody>
Catalog version: {0}
</messagebody>
</message>
<!--  -->
<message
messageid="I18N_PACKAGE"
datelastchanged="967578691394"
method="i18nPackage(String pkg)"
>
<messagebody>
I18n Package: {0}
</messagebody>
</message>
<!--  -->
<message
messageid="L10N_PACKAGE"
datelastchanged="967578720156"
method="l10nPackage(String pkg)"
>
<messagebody>
L10n Package: {0}
</messagebody>
</message>
<!--  -->
<message
messageid="SUBSYSTEM"
datelastchanged="967578755587"
method="subSystem(String sub)"
>
<messagebody>
Catalog subsystem: {0}
</messagebody>
</message>
</message_catalog>

次に、HelloWorldカタログを使用したアプリケーションの例を示します。この例では、シンプル・メッセージ・カタログを使用したアプリケーションを国際化する様々な方法を示します。

例C-2 HelloWorldカタログを使用したアプリケーションの例

package examples.i18n.simple;
import java.util.Locale;
import java.text.MessageFormat;
import weblogic.i18n.Localizer;
import weblogic.i18ntools.L10nLookup;

/**
* This example shows various ways of internationalizing an application
* using simple message catalogs.
* <p>
* Usage: java examples.i18n.simple.HelloWorld [lang [country]]
* <p>
* lang is a 2 character ISO language code. e.g. "en"
* country is a 2 character ISO country code. e.g. "US"
* <p>
* Usage of any of the languages supported by this example presumes
* the existence of the appropriate OS localization software and character
* encodings.
* <p>
* The example comes with catalogs for English (the default) and  French.
* The catalog source is in the following files, and were built
* using the catalog editing utility, weblogic.i18ntools.gui.MessageEditor.
* <p>
* <pre>
* English(base language)       ../msgcat/Helloworld.xml
* French                       ../msgcat/fr/FR/HelloWorld.xml
* </pre>
* <p>
* To build this example run the bld.sh(UNIX) or bld.cmd (NT) scripts from
* the examples/i18n/simple directory. CLIENT_CLASSES must be set up and
* needs to be in the classpath when running the example.
*/

public final class HelloWorld {

public static void main(String[] argv) {
/*
* The easiest method for displaying localized text is to
* instantiate the generated formatter class for the HelloWorld catalog.
* This class contains convenience methods that return localized text for
* each message defined in the catalog.  The class name is
* the catalog name followed by "TextFormatter".
*
* Typically, you would use the default constructor to obtain
* formatting in the current locale. This example uses a locale
* based on arguments to construct the TextFormatter.
*/
Locale lcl;
if (argv.length == 0) { // default is default locale for JVM
lcl = Locale.getDefault();
}
else {
String lang = null;
String country = null;
//get  the language code
lang = argv[0];
if (argv.length >= 2) { // get the country code
country = argv[1];
}
lcl = new Locale(lang,country);
}
/*
* Get formatter in appropriate locale.
*/
HelloWorldTextFormatter fmt = new HelloWorldTextFormatter(lcl);
fmt.setExtendedFormat(true);
/*
* Print the text in the current locale.
*/
System.out.println(fmt.helloWorld());
/*
* Alternatively,  text can be accessed and formatted manually. In this
* case you must obtain the Localizer class for the catalog. The
* Localizer class is formed from the l10n_package attribute in the
* catalog, the catalog name, and the string "TextLocalizer".
*/
Localizer l10n = L10nLookup.getLocalizer
(lcl,"examples.i18n.simple.HelloWorldTextLocalizer");
System.out.println(l10n.get("HELLO_AGAIN"));
/*
* If the message accepts arguments, they can be passed to the
* method defined for the message.
*/
System.out.println(fmt.nthHello(3));
/*
* If using the manual method, you must manually apply the argument to
* the text using the MessageFormat class.
*/
String text = l10n.get("NTH_HELLO");
Object[] args = {new Integer(4)};
System.out.println(MessageFormat.format(text,args));
/*
* The Localizer class also provides methods for accessing catalog
* information.
*/
System.out.println(fmt.version(l10n.getVersion()));
System.out.println(fmt.l10nPackage(l10n.getL10nPackage()));
System.out.println(fmt.i18nPackage(l10n.getI18nPackage()));
System.out.println(fmt.subSystem(l10n.getSubSystem()));
}
}

次に、HelloWorldカタログに対して生成されたTextFormatterの例を示します。

例C-3 HelloWorldカタログに対して生成されたTextFormatterクラスの例

package examples.i18n.simple;import java.text.MessageFormat;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
import weblogic.i18n.Localizer;
import weblogic.i18ntools.L10nLookup;
public class HelloWorldTextFormatter {
private Localizer l10n;
private boolean format=false;
// constructors
public HelloWorldTextFormatter() {
l10n = L10nLookup.getLocalizer(Locale.getDefault(),     "examples.i18n.simple.HelloWorldTextLocalizer");
}
public HelloWorldTextFormatter(Locale l) {
l10n =
L10nLookup.getLocalizer(l,"examples.i18n.simple.HelloWorldTextLocalizer");
}
public static HelloWorldTextFormatter getInstance() {
return new HelloWorldTextFormatter();
}
public static HelloWorldTextFormatter getInstance(Locale l) {
return new HelloWorldTextFormatter(l);
}
public void setExtendedFormat(boolean fmt) {
format = fmt;
}
public boolean getExtendedFormat() { return format;
/**
* Hello World!
*/
public String helloWorld()  {
String fmt  = "";
String id = "HELLO_WORLD" ;
String subsystem = "I18N" ;
Object [] args = {  };
String output =  MessageFormat.format(l10n.get(id) , args);
if (getExtendedFormat()) {
DateFormat dformat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.LONG);
fmt = "<"+dformat.format(new Date())+"><"+subsystem+"><"+id+"> ";
}
return fmt+output;
}
/**
* Hello again
*/
public String helloAgain()  {
String fmt  = "";
String id = "HELLO_AGAIN" ;
String subsystem = "I18N" ;
Object [] args = {  };
String output =  MessageFormat.format(l10n.get(id) , args);
if (getExtendedFormat()) {
DateFormat dformat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.LONG);
fmt = "<"+dformat.format(new Date())+"><"+subsystem+"><"+id+">";
}
return fmt+output;
}
/**
* This is hello number {0,number}.
*/
public String nthHello(int arg0)  {
String fmt  = "";
String id = "NTH_HELLO" ;
String subsystem = "I18N" ;
Object [] args = { new Integer(arg0) };
String output =  MessageFormat.format(l10n.get(id) , args);
if (getExtendedFormat()) {
DateFormat dformat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.LONG);
fmt = "<"+dformat.format(new Date())+"><"+subsystem+"><"+id+">";
}
return fmt+output;
}
/**
* Catalog version: {0}
*/
public String version(String arg0)  {
String fmt  = "";
String id = "VERSION" ;
String subsystem = "I18N" ;
Object [] args = { arg0 };
String output =  MessageFormat.format(l10n.get(id) , args);
if (getExtendedFormat()) {
DateFormat dformat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.LONG);
fmt = "<"+dformat.format(new Date())+"><"+subsystem+"><"+id+">";
}
return fmt+output;
}
/**
* I18n Package: {0}
*/
public String i18nPackage(String arg0)  {
String fmt  = "";
String id = "I18N_PACKAGE" ;
String subsystem = "I18N" ;
Object [] args = { arg0 };
String output =  MessageFormat.format(l10n.get(id) , args);
if (getExtendedFormat()) {
DateFormat dformat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.LONG);
fmt = "<"+dformat.format(new Date())+"><"+subsystem+"><"+id+">";
}
return fmt+output;
}
/**
* L10n Package: {0}
*/
public String l10nPackage(String arg0)  {
String fmt  = "";
String id = "L10N_PACKAGE" ;
String subsystem = "I18N" ;
Object [] args = { arg0 };
String output =  MessageFormat.format(l10n.get(id) , args);
if (getExtendedFormat()) {
DateFormat dformat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.LONG);
fmt = "<"+dformat.format(new Date())+"><"+subsystem+"><"+id+">";
}
return fmt+output;
}
/**
* Catalog subsystem: {0}
*/
public String subSystem(String arg0)  {
String fmt  = "";
String id = "SUBSYSTEM" ;
String subsystem = "I18N" ;
Object [] args = { arg0 };
String output =  MessageFormat.format(l10n.get(id) , args);
if (getExtendedFormat()) {
DateFormat dformat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.LONG);
fmt = "<"+dformat.format(new Date())+"><"+subsystem+"><"+id+">";
}
return fmt+output;
}
}

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

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

- 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
{
/**
* Starting I18nLog example...
* @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);
}
/**
* Class {0} started with {1,number} arguments.
* @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);
}
/**
* This message is followed by a trace
* @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);
}
/**
* This message is not followed by a trace, but we can insert its text : {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);
}
/**
* This message's id will be in the next message
* @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);
}
/**
* The previous message logged had message 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;

/**
* This example shows how to use the internationalized (I18n) logging interfaces.
* <p>
* usage: java examples.i18n.logging.I18nLog
* <p>
* Build procedure: run bld.sh (UNIX) or bld.cmd (NT). These scripts
* process the I18nLog.xml catalog, producing the logging class,
* <tt>examples.i18n.logging.I18nLogLogger</tt>. This class contains static
* methods for logging messages to the WLS server log. The methods
* and arguments are defined in the I18nLog.xml catalog. This example also
* uses a simple message catalog, I18nSimple.xml.
*/

public  class I18nLog {

public I18nLog() {}

public static void main(String[] argv) {
/**
* This call just logs an info message. There are no arguments defined
* for this method.
*
* This also shows how to use the Loggable form of the method.
*/

Loggable ll = I18nLogLogger.logEntryLoggable();
ll.log();
System.out.println(ll.getMessage());

/**
* Here's an example of a message including a variety
* of arguments.
*/
I18nLogLogger.testArgs(I18nLog.class.getName(),argv.length);
/**
* If a Throwable is passed then it will result in a stack trace
* being logged along with the method by default.
*/
Throwable t = new Throwable("Test with stack trace");
I18nLogLogger.logTrace(t);
/**
* Messages can optionally be defined to not log a stack trace.
*/
I18nLogLogger.logNoTrace(t);
/**
* The logger methods return the message id for applications
* that want to do more than just log these messages.
*/
String messageId = I18nLogLogger.getId();
I18nLogLogger.showId(messageId);
/**
* The message id can be used to obtain the different attributes
* of a message. The L10nLookup object provides access to the catalogs
* via Localizer classes. Localizers provide the access to individual
* messages. Each log message catalog has two Localizers: one for
* general message information and one for the detailed attributes.
*
* The basic Localizer provides access to catalog information:
*     Version
*     L10n Package - package for catalog data
*     I18n Package - package for Logger methods
*     Subsystem - catalog subsystem
* For each message it also provides:
*     Severity: debug, info, warning, error
*     Message Body - the message text
*     Stack option - whether to log a stack trace
*
* First get to the L10nLookup properties, then use them to get the
* Localizers for the message.
*/
L10nLookup l10n = L10nLookup.getL10n();
/**
* This returns the basic Localizer (arg 3 = false)
*/
Localizer lcl = l10n.getLocalizer(messageId,Locale.getDefault(),false);
/**
* This returns the detailed Localizer (arg 3 = true)
*/
Localizer lclDetail = l10n.getLocalizer(messageId,Locale.getDefault(),true);
/**
* Use this appplication's simple message catalog to display the
* log message catalog information
*/
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)));
/**
* Now for the detailed information.
*/
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)));

}
}

Copyright © 2007, 2011, Oracle and/or its affiliates. All rights reserved.