BEA ホーム | 製品 | dev2dev | support | askBEA
 ドキュメントのダウンロード   サイト マップ   Glossary 
検索

WebLogic Server ロギング サービスの使い方

 Previous Next Contents Index PDF で侮ヲ  

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

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

また、この章には以下の節も含まれています。

 


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

インターナショナライゼーション(I18N)メッセージ カタログ フレームワークは、アプリケーションが WebLogic Server ログに独自のメッセージ セットを送るために使用する一連のユーティリティと API を提供します。このフレームワークは、ログ メッセージをローカライズする必要のあるアプリケーションにとって理想的ですが、ローカライズの不要なアプリケーションに対しても、状態の通信や出力のためのフレキシブルで優れた一連のツールを提供します。

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

手順 1 : メッセージ カタログの作成

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

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

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

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

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

  3. 新しいカタログを作成するには、[ファイル|New Catalog] を選択します。

メッセージ エディタの使い方については、以下を参照してください。

メッセージ エディタでの作業を保存すると、WebLogic Server は、メッセージ カタログを構成する XML ファイルを作成します。リスト2-1 に、3 つのメッセージを定義するメッセージ カタログ サンプルを示します。このサンプルは、WebLogic Server サンプルと一緒に次の場所にインストールされています。
WL_HOME¥samples¥server¥src¥examples¥i18n¥msgcat¥UserServerSCExample.xml.

コード リスト 2-1 メッセージ カタログの例

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE message_catalog PUBLIC "weblogic-message-catalog-dtd"
"http://www.bea.com/servers/wls700/msgcat.dtd">
<message_catalog
i18n_package="examples.i18n.logging.startup"
l10n_package="examples.i18n.logging.startup"
subsystem="UserStartupClass"
version="1.0"
baseid="909050"
endid="909059"
>
<logmessage
messageid="909050"
datelastchanged="973906351125"
datehash="-854388901"
severity="info"
method="logInitialMessage(int money 0)"
stacktrace="false"
>
	<messagebody>
This message displays a number as currency:
{0,number,currency}.
</messagebody>
	<messagedetail>
Just an example.
</messagedetail>
	<cause>
</cause>
	<action>
</action>
</logmessage>
<logmessage
messageid="909051"
datelastchanged="973906462765"
datehash="-1800319350"
severity="warning"
method="logStringAndPrevCallCount(String str0, int num1)"
stacktrace="false"
>
      <messagebody>
This message displays the string "{0}". There
{1,choice,0#were no previous calls|1#was one previous
call|2#were {1,number} previous calls} to the logger method
for this message.
</messagebody>
	<messagedetail>
</messagedetail>
	<cause>
</cause>
	<action>
</action>
</logmessage>
<logmessage
messageid="909052"
datelastchanged="973906532006"
datehash="-160371672"
severity="error"
method="logFinalMessage()"
stacktrace="false"
>
	<messagebody>
This is not really an error, the example has finished
normally.
</messagebody>
	<messagedetail>
</messagedetail>
	<cause>
</cause>
	<action>
</action>
</logmessage>
</message_catalog>

手順 2 : メッセージ カタログのコンパイル

メッセージ カタログを作成したら、次のユーティリティを使用して XML ファイルから Java クラス ファイルを生成します。

Java クラス ファイルを生成およびコンパイルするには、次の手順に従います。

  1. WL_HOME¥server¥bin¥setWLSEnv.cmd(UNIX では setWLSEnv.sh)を使用してクラスパスを設定します。WL_HOME は WebLogic Server をインストールしたディレクトリです。

  2. 以下のいずれかのコマンドを入力します。

    これらのコマンドにより、Java ソース ファイルが生成されます。パッケージ名は、XML 入力ファイルの i18n_package および l10n_package 属性によって指定されます。

  3. ソース ファイルをコンパイルしてクラスパスに追加します。

i18ngen コマンドの詳細については、『インターナショナライゼーション ガイド』の「BEA WebLogic Server のインターナショナライゼーション ユーティリティの使い方」を参照してください。

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

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

たとえば、UserServerSCExample.xml という名のメッセージ カタログ(リスト2-1 を参照)の場合、i18ngen ユーティリティは examples.i18n.logging.startup.UserServerSCExampleLogger という名前のクラスを生成します。アプリケーションで logFinalMessage メッセージを書き込む場合、UserServerSCExampleLogger.logFinalMessage() メソッドを呼び出します。リスト2-2 に、このメソッドを呼び出す JSP を示します。

コード リスト 2-2 メッセージ カタログを使用する JSP の例

<html>
Order complete. Thanks for your order!
<%@ page import="examples.i18n.logging.message.UserServerSVExampleLogger" %>
<%
UserServerSVExampleLogger.logFinalMessage();
%>
</body>
</html>

 


NonCatalogLogger API の使用

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

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

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

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

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

    NonCatalogLogger(java.lang.String myApplication)

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

  3. いずれかの NonCatalogLogger メソッドを呼び出します。

    正常な処理を報告するには、以下のメソッドを使用します。

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

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

    処理の詳細またはアプリケーションの状態を示すには、以下のメソッドを使用します。これらのデバッグ メッセージは、ドメイン ログには転送されません。この重大度を使用する場合、アプリケーション用の「デバッグ モード」を作成することをお勧めします。次に、デバッグ モードで実行されるようコンフィグレーションされている場合にのみデバッグ メッセージを出力するようアプリケーションをコンフィグレーションします。デバッグ メッセージの使い方については、デバッグ メッセージの書き込みを参照してください。

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

リスト2-3 に、NonCatalogLogger API を使用してさまざまな重大度のメッセージを WebLogic Server ログに書き込むサーブレットを示します。

コード リスト 2-3 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.");
// NonCatalogLogger インスタンスを作成する。このインスタンスからの
// すべてのメッセージには <MyApplication> 文字列が含まれる
myLogger = new NonCatalogLogger("MyApplication");
// アプリケーションが起動したことを示す INFO メッセージを出力する
mylogger.info("Application started.");
// 例外メッセージの例を示すために、コードの次の行では
// 意図的に初期コンテキストを設定している。デフォルトの
// ポート番号(7001)を使用するサーバでこのサーブレットを実行すると、
// サーブレットは例外を送出する
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());
// スタック トレースを含む WARNING メッセージを出力する
mylogger.warning("Can't establish connections. ", e);
    }
   }  
}

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

コード リスト 2-4 NonCatalogLogger Output

####<Jun 26, 2002 12:04:21 PM EDT> <Info> <MyApplication> <peach> <examplesServer> <ExecuteThread: '10' for queue: 'default'> <kernel identity> <> <000000> <Application started.> 
####<Jun 26, 2002 12:04:23 PM EDT> <Warning> <MyApplication> <peach> <examplesServer> <ExecuteThread: '10' for queue: 'default'> <kernel identity> <> <000000> <Can't establish connections. > 
javax.naming.CommunicationException.  Root exception is java.net.ConnectException: t3://localhost:8000: Destination unreachable; nested exception is: 
...

表 2-1 に、NonCatalogLogger ログ メッセージに含まれるすべてのフィールドを示します。

表2-1 NonCatalogLogger ログ メッセージのフォーマット

フィールド

説明

Localized Timestamp

メッセージが生成された日付と時刻。年、月、日、時、分、および秒が記載される。例 : <Jun 26, 2002 12:04:21 PM EDT>

Severity

次の重大度のいずれか。メッセージの生成に使用したメソッドのタイプに対応する。

InfoWarningErrorDebug

Subsystem

メッセージのソースを示す。NonCatalogLogger コンストラクタで指定する文字列。

MachineName

アプリケーションが実行される JVM をホストするコンピュータの名前。

ServerName

アプリケーションが実行される WebLogic Server インスタンスの名前。

ThreadId

現在のプロセスが使用している実行スレッドを示す。WebLogic Server で複数の実行キューを使用すると、アプリケーションから実行スレッドへのアクセスを微調整できる(従って、パフォーマンスを最適化できる)。詳細については、『パフォーマンス チューニング ガイド』の「実行キューによるスレッド使用の制御」を参照。

User Id

エラーが報告されたときに実行されていたシステムのユーザ。

TransactionId

トランザクションのコンテキストでロギングされたメッセージにのみ示される。

Message Id

メッセージの 6 桁の識別子。NonCatalogLogger メッセージの場合、メッセージ ID は常に 000000

Message Text

NonCatalogLogger メソッドで指定するテキスト。

ExceptionName

メッセージに例外がロギングされた場合、このフィールドには例外の名前が示される。

 


GenericServlet の使用

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

これらの API の使い方については、javax.servlet.GenericServlet の J2EE Javadoc(http://java.sun.com/products/servlet/2.3/javadoc/javax/servlet/GenericServlet.html)を参照してください。

JSP は GenericServlet から拡張されることはなく、これらの API を使用できません。JSP でログ ファイルにメッセージを送信する場合は、I18N メッセージ カタログ サービスまたは NonCatalogLogger API を使用してください。

 


リモート アプリケーションからのメッセージの書き込み

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

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

-Dweblogic.log.FileName=logfilename

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

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

-Dweblogic.StdoutEnabled=true 
-Dweblogic.StdoutDebugEnabled=boolean
-Dweblogic.StdoutSeverityLevel = [64 | 32 | 16 | 8 | 4 | 2 | 1 ]

booleantruefalse のいずれかで、StdoutSeverityLevel の数値は以下の重大度に対応します。

INFO(64)、WARNING(32)、ERROR(16)、NOTICE(8)、CRITICAL(4)、ALERT(2)、および EMERGENCY(1)

リモート JVM からファイルへのメッセージの書き込み

リモート JVM は、自身のステート情報を送信するための独自のメッセージ セットを生成できます。たとえば、ガベージ コレクションに関するメッセージを生成するよう JVM をコンフィグレーションできます。デフォルトでは、JVM はこれらのメッセージを標準出力に送ります。これらのメッセージは JVM のログ ファイルにリダイレクトできませんが、別のファイルに保存できます。詳細については、『管理者ガイド』の「System.out および System.err のファイルへのリダイレクト」を参照してください。

 


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

アプリケーションの開発中、そのアプリケーションの低レベル アクティビティを示すメッセージを作成および使用できると便利です。DEBUG 重大度を使用すると、これらの低レベル メッセージを分類できます。アプリケーションが生成するすべての DEBUG メッセージは WebLogic Server ログ ファイルに送られます。重大度に基づいてログ メッセージを動的に除外できるサードパーティ ロギング サービスの Log4j とは異なり、WebLogic Server ログにはアプリケーションが生成するすべてのレベルのメッセージが含まれます。

WebLogic Server が DEBUG メッセージを標準出力に送るようコンフィグレーションできます。詳細については、Administration Console オンライン ヘルプの「一般的なログ ファイル設定の指定」を参照してください。

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

次に例を示します。

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

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

 

Back to Top Previous Next