ナビゲーションをスキップ

ログ ファイルのコンフィグレーションとログ メッセージのフィルタ処理

  前 次 前/次ボタンと目次ボタンとの区切り線 目次  

WebLogic ロギング サービスのコンフィグレーション

以下の節では、WebLogic Server のロギングのシナリオと基本的なコンフィグレーション タスクについて説明します。メッセージのフィルタ処理とサブスクライブの詳細な手順については、「WebLogic Server ログ メッセージのフィルタ処理」と「メッセージのサブスクライブ」を参照してください。

 


コンフィグレーションのシナリオ

WebLogic Server システム管理者と開発者は、ロギング出力をコンフィグレーションし、ログ メッセージをフィルタ処理してエラーをトラブルシューティングしたり、特定のイベントの通知を受信したりします。

以下に、ロギングのコンフィグレーション シナリオの一部を示します。

 


ロギング サービス コンフィグレーションの概要

ロギングの量の制御は、LogMBean インタフェースを介して行えます。ロギング プロセスでは、サブスクライブされたハンドラまたはアペンダにロギング要求がディスパッチされます。WebLogic Server では、ログ メッセージを標準出力に送信するためのハンドラ、サーバ ログ ファイル、ドメイン ログへのメッセージのブロードキャスト機能、リモート クライアント、ログ イベントを末尾表示するためのメモリ バッファが WebLogic Server Administration Console から利用できます。各種ハンドラの量の制御を行うには、重大度などの条件を基にログ メッセージをフィルタ処理します。LogMBean には、重大度を設定し、WebLogic Server ハンドラのフィルタ条件を指定するための属性を定義します。

以前のバージョンの WebLogic Server では、システム管理者と開発者は、ロガーとハンドラにプログラム的なアクセスしかできませんでした。このリリースの WebLogic Server では、MBean を使用してハンドラをコンフィグレーションできるので、最も基本的なロギング コンフィグレーションのコードを記述する必要はありません。Administration Console と WebLogic Server Scripting Tool (WLST) では、ロギング MBean とやりとりするためのインタフェースが提供されます。また、Dweblogic.log.attribute-name=value を使用して、コマンドラインで LogMBean パラメータを指定することもできます (たとえば、Dweblogic.log.StdoutSeverity=Debug)。『WebLogic Server コマンド リファレンス』の「weblogic.Server コンフィグレーション オプション」を参照してください。

さらに詳細な使い方のシナリオを利用したり、ロガーをコンフィグレーションしたりする場合は、Java ロギング API を使用します。

ロギングの量の制御で最も単純なのは、ハンドラに対して重大度を設定することです。基準となる重大度を指定して、それより低いレベルのメッセージの拒否するように設定することなどができます。たとえば、標準出力のハンドラには、デフォルトの重大度のしきい値として Notice が設定されています。そのため、重大度が INFO および DEBUG のメッセージは標準出力に送信されません。

ハンドラに対してフィルタをコンフィグレーションすると、HTTP および JDBC サブシステムからのメッセージのみを標準出力に送信するなど、パブリッシュ用にログ メッセージを受け付ける条件を指定できます。

注意 : ロガーまたはハンドラのコンフィグレーションを変更する場合は、java.util.logging.LoggingPermission が必要です。プロダクション環境では、現在のユーザに対して java.util.logging.LoggingPermission を有効にした Java セキュリティ マネージャの使用をお勧めします。

『WebLogic Security プログラミングの概要』の「Using the Java Security Manager to Protect WebLogic Resources」および Sun API のドキュメント (http://java.sun.com/j2se/1.5.0/docs/guide/logging/overview.html) を参照してください。

以下の節では、WebLogic Server のロギング動作をコンフィグレーションする際の基準点について詳細を説明します。

ログの重大度の使用

各ログ メッセージには、関連する重大度があります。重大度は、ログ メッセージの重要性と緊急度を大まかに示します。WebLogic Server では、TRACE から EMERGENCY までの重大度があらかじめ定義されています。これらの重大度は、ログ要求がロガーにディスパッチされるとログ レベルに変換されます。ログ レベル オブジェクトは、以下の値 (影響の小さい方から大きい方の順で並んでいる) のいずれかを指定できます。

TRACEDEBUGINFONOTICEWARNINGERRORCRITICALALERTEMERGENCY

ロガーとハンドラに対してログのセキュリティ レベルを設定できます。ロガーに対してセキュリティ レベル設定した場合、いずれのハンドラも、ロガーによって拒否されたイベントを受信しません。たとえば、ロガーに対してログ レベルを NOTICE に設定した場合、ハンドラは、INFO レベルのイベントを受信しません。ハンドラに対してログ レベルを設定した場合、制約はそのハンドラにのみ適用され、他のハンドラには及びません。たとえば、ファイル ハンドラに対して DEBUG をオフにしても、DEBUG メッセージがログ ファイルに書き込まれないわけではありません。ただし、DEBUG メッセージは標準出力に書き込まれます。

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

ハンドラに対するログ レベルの設定は、Administration Console、WLST、またはコマンド ラインで行います。ロガーのコンフィグレーションには API のみを使用できます。「ロガーとハンドラに対する重大度の設定」を参照してください。

ログ フィルタの使用

Logger オブジェクトがパブリッシュするメッセージをより細かく管理できるようにするために、フィルタを作成して設定できます。フィルタはカスタム ロジックによりログ記録の内容を評価するクラスで、ログ メッセージを受け入れるか拒否するかの判断に使用します。たとえば、特定の重大度のメッセージや、特定のサブシステムに由来するメッセージなど、指定した条件に従ってメッセージを選択的に除去することが可能です。Logger オブジェクトは、フィルタの基準を満たすログ メッセージだけをパブリッシュします。各サーバ インスタンスから、サーバのログ ファイル、標準出力、メモリ バッファに書き込まれるメッセージ、またはドメイン全体のメッセージ ログにブロードキャストされるメッセージについて、個別にフィルタを作成できます。

フィルタをロガーやハンドラに関連付けることができます。ハンドラに対するフィルタのコンフィグレーションは、Administration Console、WLST、またはコマンド ラインで行います。標準出力、ログ ファイル、ログ フロードキャスタ、およびメモリ ハンドラに対してフィルタを定義するための LogFilterMBean 属性があります。または、プログラムでカスタム フィルタ処理ロジックを実装できます。LogFilterMBean インタフェースは、ユーザ ID およびサブシステムに基づくフィルタ処理条件を定義します。ロガーに対するフィルタのコンフィグレーションには API のみを使用できます。

ロガーとハンドラのフィルタの設定」を参照してください。

 


ロギングのコンフィグレーション タスク : 主な手順

以下の手順に、WebLogic Server が生成するログ メッセージをコンフィグレーションおよびフィルタ処理する方法を示します。この手順の詳細については、関連マニュアルおよびこのマニュアルの後半の節で説明します。

  1. Administration Console を使用して、ログ ファイルを管理し、次のロギング オプションをコンフィグレーションします。
    1. ドメイン ログおよびサーバ ログのファイル名と場所、ローテーション パターン、アーカイブされたログ ファイルの場所、ログ ファイル数が格納されます。Administration Console オンライン ヘルプの「ログの表示とコンフィグレーション」を参照してください。
    2. サーバが標準出力に送信するメッセージの種類。Administration Console オンライン ヘルプの「標準出力するメッセージの指定」を参照してください。
    3. サーバ インスタンスがドメイン ログに送信するメッセージ。Administration Console オンライン ヘルプの「ドメイン ログへのメッセージの転送」を参照してください。
    4. HTTP 要求に対するログ ファイル。Administration Console オンライン ヘルプの「HTTP ログの有効化とコンフィグレーション」を参照してください。
    5. ロギングの実装 (Java ロギングまたは Log4j) を指定します。「WebLogic ロギング サービスでの Log4j の使い方」を参照してください。
    6. メッセージの送り先を指定し、重大度や他の条件によるログ メッセージのフィルタ処理をコンフィグレーションします。Administration Console オンライン ヘルプの「ログ メッセージのフィルタ処理」を参照してください。
  2. または、WebLogic Scripting Tool を使用して、メッセージ ハンドラに対するログ メッセージのフィルタ処理をコンフィグレーションします。『WebLogic Scripting Tool ガイド』の「ロギングのコンフィグレーション」を参照してください。
  3. Java API を使用して、ロガーからパブリッシュされるログ メッセージをフィルタ処理します。「重大度などの条件によるメッセージのフィルタ処理」を参照してください。

 


Log4j と Commons Logging API

WebLogic Server メッセージ カタログと WebLogic ロギング サービスを使用して、ログ メッセージを生成するアプリケーションを開発する場合は、XML と Java API に関する知識が必要です。開発者とシステム管理者の多くは、Java ロギング API の前身である Log4j を使用しています。Log4j は、アプリケーション内にログ文を入れるために開発されたオープン ソースのツールです。Log4j ロギング機能は、Apache Foundation の Jakarta プロジェクトによって開発されています。Log4j の詳細については、Log4j プロジェクトのサイト (http://logging.apache.org/log4j/docs/) を参照してください。

WebLogic Server では、WebLogic ロギング サービスのコンフィグレーションに Log4j を使用できます。「WebLogic ロギング サービスでの Log4j の使い方」を参照してください。

Jakarta Commons Logging API では、基底のログ実装 (Log4j または Java ロギング API) からユーザを分離する抽象レイヤが提供されています。WebLogic Server には Commons LogFactory インタフェースの実装が用意されており、この API を使用してサーバの Logger にリクエストを発行できます。「WebLogic ロギング サービスでの Commons API の使い方」を参照してください。

Log4j について

Log4j には、ロガー、アペンダ、レイアウトの 3 つの主要コンポーネントがあります。以下の節では、Log4j について簡単に説明します。

ロガー

Log4j には、Logger クラスを定義します。1 つのアプリケーションで、各々がユニークな名前を持つ複数のロガーを作成できます。Log4j の標準的な使い方では、アプリケーションで、ログ メッセージを出力する各アプリケーション クラスの Logger インスタンスが作成されます。ロガーはネームスペースの階層内に存在し、その階層における上位クラスから動作を継承します。

アペンダ

Log4j には、ロギング出力の送り先を表すアペンダ (ハンドラ) を定義します。複数のアペンダを定義できます。たとえば、1 つのアプリケーションで、ログ メッセージを標準出力に送信するアペンダと、ファイルに書き込むアペンダを定義できます。個々のロガーをコンフィグレーションして、0 または 1 つ以上のアペンダに書き込むようにコンフィグレーションすることもできます。一例としては、すべてのロギング メッセージ (全レベル) をログ ファイルに送信する一方で、標準出力には ERROR レベル メッセージのみを送信する使い方があります。

レイアウト

Log4j には、ログ メッセージのフォーマットを制御するレイアウトを定義します。各レイアウトにより、特定のメッセージ フォーマットが指定されます。特定のレイアウトが各アペンダと関連付けられます。これにより、たとえばファイル出力とは違うログ メッセージ フォーマットを標準出力に対して指定できます。

 


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

WebLogic ロギング サービスでは、Java Logging API に基いた実装がデフォルトで使用されます。LogMBean.isLog4jLoggingEnabled 属性を使用すると、代わりに Log4j をロギング サービスで使用できるようになります。

Administration Console で、Log4j を指定することも、デフォルトのまま Java ロギング実装を使用することもできます (Administration Console オンライン ヘルプの「ロギングの実装の指定」を参照)。

または、LogMBean インタフェースで Log4j ロギングをコンフィグレーションするには、WebLogic 固有の Log4j クラス WL_HOME/server/lib/wllog4j.jarlog4j.jar ファイルをサーバの CLASSPATH に追加します。この場合に推奨される方法は、wllog4j.jar ファイルと log4j.jar ファイルを DOMAIN_NAME/lib ディレクトリに格納することです。これにより、サーバの起動時に各ファイルがサーバの CLASSPATH に動的に追加されます。

注意 : WebLogic Server の配布キットに Log4j バージョンは含まれていません。

Log4j が有効化されていると、weblogic.logging.log4j.Log4jLoggingHelper クラスから、サーバが使用している org.apache.log4j.Logger への参照を取得できます。

Log4j Logger 参照により、独自のカスタム アペンダをアタッチしてサーバ ログ イベントを受け取ることができます。たとえば、サーバ ログ イベントを Syslog または Windows イベント ビューアに送るアペンダをアタッチできます。また、Logger 参照を使用して WebLogic ロギング サービスにログ要求を発行できます。この場合、デプロイされたアプリケーションで Log4j ライブラリが使用可能になっている必要があります。

アプリケーションが WebLogic ロギング サービスと対話する必要がない場合、アプリケーションの LIB ディレクトリに Log4j ライブラリをパッケージ化します。サーバ ロギングでは、引き続きデフォルトの Java ロギング実装が使用されます。

コード リスト 3-2 に、Log4j Logger を使用した Log4j のコード サンプルを示します。

Log4j の有効化

デフォルト Java ロギングではなく Log4j Logger へのロギングを指定するには、次の手順に従います。

コード リスト 3-1 Log4j ロギングの有効化

#WLST を呼び出す
C:\>java weblogic.WLST
#WLST を管理サーバに接続する
wls:/offline> connect('username','password')
# 書き込み可能な MBean コンフィグレーションツリーに移動する
wls:/mydomain/serverConfig> edit()
wls:/mydomain/edit> startEdit()
#cmo をサーバ ログのコンフィグレーションに設定する
wls:/mydomain/edit !> cd("Servers/myserver/Log/myserver")
#log4j ロギングを true に設定する
wls:/mydomain/edit/Servers/myserver/Log/myserver !> cmo.setLog4jLoggingEnabled(true)
# 変更を保存して有効化する
wls:/mydomain/edit/Servers/myserver/Log/myserver !> save()
wls:/mydomain/edit/Servers/myserver/Log/myserver !> activate()

WLST の使い方については、『WebLogic Scripting Tool ガイド』の「コンフィグレーション MBean の編集」を参照してください。isLog4jLoggingEnabled の詳細については、『WebLogic Server MBean リファレンス』の「LogMBean」を参照してください。

管理サーバのみに存在するドメインの Logger だけでなく、サーバの Logger でも Log4j を使用できます。ドメインの Log4j Logger 参照は、weblogic.logging.log4j.Log4jLoggingHelper.getLog4jDomainLogger() メソッドを呼び出すと利用可能になります。

コード リスト 3-2コード リスト 3-3 の Log4j ロギング コンフィグレーションの例では、以下の項目を示します。

コード リスト 3-2 Log4j のコード サンプル

import org.apache.log4j.Logger;
import weblogic.logging.log4j.Log4jLoggingHelper;
import weblogic.logging.LoggerNotAvailableException;
/**
 * この例では、Log4j サーバ Logger の使用方法を示す
 */
public class MyLog4jTest {
  public void testWLSLog4j() {
    try {
      Logger logger = Log4jLoggingHelper.getLog4jServerLogger();
      logger.addAppender(myAppender); // log4j プロパティ ファイルか他のカスタム メカニズムのいずれかでアペンダをコンフィグレーションする
      logger.info("Test log message");
    } catch(LoggerNotAvailableException lex) {
    System.err.println("Unable to get a reference to the log4j Logger: "+
      lex.getMessage())
    }
  }
}

コード リスト 3-3 ロギング コンフィグレーションのサンプル

<con:log>
    <con:name>medrec</con:name>
    <con:file-name>medrec.log</con:file-name>
    <con:rotation-type>bySize</con:rotation-type>
    <con:file-min-size>20000</con:file-min-size>
    <con:log4j-logging-enabled>false</con:log4j-logging-enabled>
</con:log>
<con:log>
    <con:name>MedRecServer</con:name>
    <con:rotation-type>bySize</con:rotation-type>
    <con:file-min-size>20000</con:file-min-size>
    <con:stdout-severity>Debug</con:stdout-severity>
    <con:stdout-filter>MyFilter</con:stdout-filter>
    <con:log4j-logging-enabled>true</con:log4j-logging-enabled>
</con:log>
<con:log-filter>
    <con:name>MyFilter</con:name>
    <con:subsystem-name>HTTP</con:subsystem-name>
    <con:subsystem-name>IIOP</con:subsystem-name>
    <con:subsystem-name>JDBC</con:subsystem-name>
    <con:subsystem-name>JMS</con:subsystem-name>
</con:log-filter>

コンフィグレーションするために、プログラムで Log4j Logger とそのアペンダ (ハンドラ) およびレイアウト (フォーマッタ) にアクセスできます。「Log4j アペンダに対する重大度とフィルタの設定」を参照してください。

Java ロギングは、クライアントサイドおよびサーバサイドのロギングのデフォルトです。Log4j は、サーバサイドでのみ使用できます。クライアントサイドではサポートされていません。

 


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

WebLogic ロギング サービスでは、WebLogic ロギング サービスで使用される基底ロギング実装に要求を送る Commons LogFactory インタフェースと Log インタフェースを利用できます。

Commons Logging を使用するには、WebLogic 固有の Commons クラス WL_HOME/server/lib/wlcommons-logging.jarcommons-logging.jar ファイルとともに以下のいずれかの場所に格納します。

注意 : WebLogic Server の配布キットに Commons ロギング バージョンは含まれていません。

コード リスト 3-4 では、Commons インタフェースの使用方法を示します。

  1. システム プロパティ org.apache.commons.logging.LogFactoryweblogic.logging.commons.LogFactoryImpl に設定します。
  2. この LogFactory は、org.apache.commons.logging.Log インタフェースを実装する weblogic.logging.commons.LogFactoryImpl のインスタンスを作成します。

  3. LogFactory から、名前を基準に Commons Log オブジェクトへの参照を取得します。
  4. この名前は、ログ ファイル内でサブシステム名として表示されます。

  5. Log オブジェクトを使用して、ログ要求を WebLogic ロギング サービスに発行します。
  6. Commons Log インタフェース メソッドは、オブジェクトを受け付けます。ほとんどの場合、これはメッセージ テキストを含む文字列です。さらに、WebLogic ロギングでは、引数として weblogic.logging.commons.CommonsLogObject 参照を Log メソッドに渡すことができます。

    Commons LogObject は、コンストラクタでメッセージ ID、サブシステム名、および文字列メッセージ引数を取ります。org.apache.commons.logging (http://jakarta.apache.org/commons/logging/api/index.html) を参照してください。

  7. weblogic.logging.commons.LogImpl ログ メソッドは、メッセージをサーバ ログに送ります。

コード リスト 3-4 Commons のコード サンプル

import org.apache.commons.logging.LogFactory;
import org.apache.commons.logging.Log;
import weblogic.logging.commons.CommonsLogObject;
public class MyCommonsTest {
  public void testWLSCommonsLogging() {
    System.setProperty(LogFactory.FACTORY_PROPERTY,
      "weblogic.logging.commons.LogFactoryImpl");
    Log clog = LogFactory.getFactory().getInstance("MyCommonsLogger");
    // ログ String オブジェクト
    clog.debug("Hey this is common debug");
    clog.fatal("Hey this is common fatal", new Exception());
    clog.error("Hey this is common error", new Exception());
    clog.trace("Dont leave your footprints on the sands of time");
    // CommonsLogObject によるログ
    clog.fatal(new CommonsLogObject("BEA-420000", "Console", "Just a test"));
  }
}

 


ログ ファイルのローテーション

デフォルトでは、WebLogic Server インスタンスを開発モードで起動すると、サーバはローカルのサーバ ログ ファイルを自動的に SERVER_NAME.log.n という名前に変更 (ローテーション) します。以降のサーバ セッションでは、ファイル サイズが 500KB になるまで、ログ メッセージは SERVER_NAME.log に蓄積されます。

サーバ ログ ファイルがこのサイズに達するたびに、サーバはログ ファイルの名前を変更し、新しい SERVER_NAME.log を作成して新しいメッセージを格納します。デフォルトでは、ローテーションされたログ ファイルは作成順に番号が付けられます (filenamennnnn)。filename は、ログ ファイルにコンフィグレーションされた名前です。ローテーションされたログ ファイルのファイル名に日付と時刻を含めるように、サーバ インスタンスをコンフィグレーションすることもできます (たとえば、server-name-%yyyy%-%mm%-%dd%-%hh%-%mm%.log)。

デフォルトでは、サーバ インスタンスをプロダクション モードで起動すると、ファイル サイズが 5000KB になるたびに、サーバはサーバ ログ ファイルをローテーションします。サーバの起動時にはローカルのサーバ ログ ファイルはローテーションされません。サーバの起動モードの変更については、Administration Console のオンライン ヘルプの「プロダクション モードへの変更」を参照してください。

ログ ファイルのローテーションに関するこれらのデフォルト設定は変更できます。たとえば、サーバがログ ファイルをローテーションするファイル サイズを変更したり、時間間隔に基づいてログ ファイルをローテーションするようにコンフィグレーションしたりできます。蓄積可能なローテーションするファイルの最大数を指定することもできます。ログ ファイル数がこの制限に達すると、以降のファイル ローテーションによって最も古いログ ファイルが削除され、最新のサフィックスの付いた新しいログ ファイルが作成されます。

注意 : WebLogic Server では、ログ ファイルのサイズが大きくなりすぎることを防ぐために強制的に頻繁なローテーションを行う前に、しきい値が 500 MB に設定されます。

ログ ファイルのローテーションの設定については、Administration Console オンライン ヘルプの「ログ ファイルのローテーション」を参照してください。

サーバ、ドメイン、または HTTP アクセス ログ ファイルのローテーションをすぐに行うには、LogRuntime.forceLogRotation() メソッドを使用します。『WebLogic Server MBean リファレンス』の「LogRuntimeMBean」を参照してください。

コード リスト 3-5 の WLST コマンドは、サーバ ログ ファイルのローテーションをすぐに行います。

コード リスト 3-5 オン デマンドのログ ローテーション

#WLST を呼び出す
C:\>java weblogic.WLST
#WLST を管理サーバに接続する
wls:/offline> connect('username','password')
#ServerRuntime MBean 階層に移動する
wls:/mydomain/serverConfig> serverRuntime()
wls:/mydomain/serverRuntime>ls()
# サーバの LogRuntimeMBean に移動する
wls:/mydomain/serverRuntime> cd('LogRuntime/myserver')
wls:/mydomain/serverRuntime/LogRuntime/myserver> ls()
-r-- Name myserver
-r-- Type LogRuntime
-r-x   forceLogRotation                             java.lang.Void :
# サーバ ログ ファイルのローテーションをすぐに行う
wls:/mydomain/serverRuntime/LogRuntime/myserver> cmo.forceLogRotation()
wls:/mydomain/serverRuntime/LogRuntime/myserver>

サーバは即座にファイルのローテーションを行い、次のメッセージを出力します。

<Mar 2, 2005 3:23:01 PM EST> <Info> <Log Management> <BEA-170017> <The log file C:\diablodomain\servers\myserver\logs\myserver.log will be rotated.Reopen the log file if tailing has stopped.This can happen on some platforms like Windows.>
<Mar 2, 2005 3:23:01 PM EST> <Info> <Log Management> <BEA-170018> <The log file has been rotated to C:\diablodomain\servers\myserver\logs\myserver.log00001.Log messages will continue to be logged in C:\diablodomain\servers\myserver\logs\myserver.log.>

アーカイブされたログ ファイルの場所の指定

デフォルトでは、ローテーションされたファイルはログ ファイルと同じディレクトリに格納されます。アーカイブされたログ ファイルの格納先に別のディレクトリを指定するには、Administration Console を使用するか、コマンド ラインから LogFileMBeanLogFileRotationDir プロパティを設定します。『WebLogic Server MBean リファレンス』の「LogFileMBean」を参照してください。

次のコマンドでは、-Dweblogic.log.LogFileRotationDir Java 起動オプションを使用して、アーカイブされたログ ファイルのディレクトリを指定します。

java -Dweblogic.log.LogFileRotationDir=c:\foo
-Dweblogic.management.username=installadministrator
-Dweblogic.management.password=installadministrator weblogic.Server

ローテーションの通知

ログ ファイルが指定のローテーションしきい値を超えると、サーバ インスタンスはログ ファイルがローテーションされることを知らせるログ メッセージを出力します。次に、サーバ インスタンスはログ ファイルをローテーションし、古いメッセージが格納されたファイルの名前を知らせる追加メッセージを出力します。

たとえば、サイズに基づいてログ ファイルのローテーションを行うように設定し、最小ローテーション サイズとして 500K を指定した場合、サーバはファイル サイズが 500K を超えたと判断すると次のメッセージを出力します。

<Sept 20, 2004 1:51:09 PM EST> <Info> <Log Management> <MachineName> <MedRecServer> <ExecuteThread: '2' for queue: 'weblogic.kernel.System'> <<WLS Kernel>> <> <> <1095692939895> <BEA-170017> <The log file C:\bea\wls\samples\domains\medrec\servers\MedRecServer\logs\medrec.log will be rotated.Reopen the log file if tailing has stopped.This can happen on some platforms like Windows.> 

サーバは即座にファイルのローテーションを行い、次のメッセージを出力します。

<Sept 20, 2004 1:51:09 PM EST> <Info> <Log Management> <MachineName> <MedRecServer> <ExecuteThread: '2' for queue: 'weblogic.kernel.System'> <<WLS Kernel>> <> <> <1095692939895> <BEA-170018> <The log file has been rotated to C:\bea\wls\samples\domains\medrec\servers\MedRecServer\logs\medrec.log00001. Log messages will continue to be logged in C:\bea\wls\samples\domains\medrec\servers\MedRecServer\logs\medrec.log.>

どちらのメッセージの重要度も INFO です。ローテーション前のメッセージのメッセージ ID は常に BEA-170017 で、ローテーション後のメッセージのメッセージ ID は常に BEA-170018 です。

標準 Windows ファイル システムなどのファイル システムでは、読み取り用に開いているファイルにロックが設定されます。このようなファイル システムでは、アプリケーションでログ ファイルの末尾を表示している場合、またはコマンド プロンプトで DOS tail -f などのコマンドを使用する場合、サーバがログ ファイルのローテーションを行った後にその操作が停止します。tail -f コマンドは、ファイルに行が追加されたときにメッセージを標準出力に出力します。詳細情報を参照するには、DOS プロンプトで help tail と入力してください。

アプリケーションでログ ファイルの末尾を表示する場合、こうした状況を解決するには、サーバがログ ローテーション メッセージを出力したときにアプリケーションに通知を行う JMX リスナを作成します。アプリケーションは、このメッセージを受信したときに末尾表示の操作を再開できます。JMX リスナの例については、「メッセージのサブスクライブ」を参照してください。

 


JVM の出力のリダイレクト

WebLogic Server インスタンスが動作している JVM は、メッセージを標準エラーおよび標準出力に送信します。サーバとアプリケーション コードは、ロギング メカニズムを使用する代わりに、これらのストリームに直接書き込みます。コンフィグレーション オプションを使用すると、サーバのターミナル コンソールやログ ファイルなど、登録されているすべてのログ送り先に JVM の出力をリダイレクトできます。有効にした場合、ログ エントリは、重大度が NOTICE のメッセージとして表示されます。JVM 出力のリダイレクトによって、ネイティブ コードからの出力 (たとえば、JVM からのスレッド ダンプ) はキャプチャされません。

たとえば、JVM の標準出力メッセージをリダイレクトするには、次の手順に従います。

コード リスト 3-6 サーバ ロギング送り先への標準出力のリダイレクト

C:\>java weblogic.WLST
wls:/offline> connect('username','password')
wls:/mydomain/serverConfig> edit()
wls:/mydomain/edit> startEdit()
wls:/mydomain/edit !> cd("Servers/myserver/Log/myserver")
wls:/mydomain/edit/Servers/myserver/Log/myserver !> cmo.setRedirectStdoutToServerLogEnabled(true)
wls:/mydomain/edit/Servers/myserver/Log/myserver !> save()
wls:/mydomain/edit/Servers/myserver/Log/myserver !> activate()

WLST の使い方については、『WebLogic Scripting Tool ガイド』の「コンフィグレーション MBean の編集」を参照してください。RedirectStdoutToServerLogEnabled の詳細については、『WebLogic Server MBean リファレンス』の「LogMBean」を参照してください。

 

フッタのナビゲーションのスキップ  ページの先頭 前 次