ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server ログ ファイルのコンフィグレーションとログ メッセージのフィルタ処理
11g リリース 1 (10.3.1)
B55548-01
 

目次
目次

戻る
戻る
 
次へ
次へ
 

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

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

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

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

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

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

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

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

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

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

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


注意 :

ユーザがロガーまたはハンドラのコンフィグレーションを変更するためには、java.util.logging.LoggingPermission (http://java.sun.com/javase/6/docs/api/java/util/logging/LoggingPermission.html を参照) が必要です。プロダクション環境では、現在のユーザに対して java.util.logging.LoggingPermission を有効にした Java セキュリティ マネージャの使用をお勧めします。

『Oracle Fusion Middleware Oracle WebLogic Server Security プログラマーズ ガイド』の「Java セキュリティ マネージャを使用しての WebLogic リソースの保護」、および Sun Microsystems 発行の「Java Logging Overview」(http://java.sun.com/javase/6/docs/technotes/guides/logging/overview.html) を参照してください。


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

ログの重大度の使用

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

TRACEDEBUGINFONOTICEWARNINGERRORCRITICALALERTEMERGENCY

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

サポートされている重大度の詳細については、『Oracle Fusion Middleware Oracle WebLogic Server API Reference』の weblogic.logging.Severities クラスに関する説明を参照してください。

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

ログ フィルタの使用

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

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

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

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

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

  1. Administration Console を使用して、ログ ファイルを管理し、次のロギング オプションをコンフィグレーションします。

    1. ドメイン ログおよびサーバ ログのファイル名と場所、ローテーション パターン、アーカイブされたログ ファイルの場所、ログ ファイル数が格納されます。Oracle Fusion Middleware Oracle WebLogic Server の Administration Console オンライン ヘルプの「ログの表示とコンフィグレーション」を参照してください。

    2. サーバが標準出力に送信するメッセージの種類。Oracle Fusion Middleware Oracle WebLogic Server の Administration Console オンライン ヘルプの「標準出力するメッセージの指定」を参照してください。

    3. サーバ インスタンスがドメイン ログに送信するメッセージ。Oracle Fusion Middleware Oracle WebLogic Server の Administration Console オンライン ヘルプの「ドメイン ログへのメッセージの転送」を参照してください。

    4. HTTP リクエストに対するログ ファイル。Oracle Fusion Middleware Oracle WebLogic Server の Administration Console オンライン ヘルプの「HTTP ログの有効化とコンフィグレーション」を参照してください。

    5. ロギングの実装 (Java ロギングまたは Log4j) を指定します。「WebLogic ロギング サービスでの Log4j の使い方」を参照してください。

    6. メッセージの送り先を指定し、重大度や他の条件によるログ メッセージのフィルタ処理をコンフィグレーションします。Oracle Fusion Middleware Oracle WebLogic Server の Administration Console オンライン ヘルプの「ログ メッセージのフィルタ処理」を参照してください。ロガーの重大度の指定」も参照してください。

  2. または、WebLogic Scripting Tool を使用して、メッセージ ハンドラに対するログ メッセージのフィルタ処理をコンフィグレーションします。『Oracle Fusion Middleware Oracle 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 ロギング実装を使用することもできます (Oracle Fusion Middleware Oracle WebLogic Server の Administration Console オンライン ヘルプの「ロギングの実装の指定」を参照)。

また、LogMBean インタフェースで、WebLogic 固有の Log4j クラス WL_HOME/server/lib/wllog4j.jar および log4j.jar ファイルをサーバの CLASSPATH に追加することによっても、Log4j ロギングをコンフィグレーションできます。この場合、wllog4j.jar ファイルと log4j.jar ファイルを DOMAIN_NAME/lib ディレクトリに格納するという方法が推奨されます。これにより、サーバの起動時に各ファイルがサーバの CLASSPATH に動的に追加されます。これらのファイルを別の場所に格納する場合は、両方の .jar ファイルを同じディレクトリに格納し、サーバの 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 へのロギングを指定するには、次の手順に従います。

  • 管理サーバの起動時に、weblogic.Server コマンドに次の Java オプションを指定する。

    -Dweblogic.log.Log4jLoggingEnabled=true
    

    『Oracle Fusion Middleware Oracle WebLogic Server コマンド リファレンス』の「weblogic.Server コンフィグレーション オプション」を参照してください。

  • 管理サーバの起動後に、Administration Console で Log4j ロギング実装を指定する。Oracle Fusion Middleware Oracle WebLogic Server の Administration Console オンライン ヘルプの「ロギングの実装の指定」を参照してください。

  • WLST を使用して Log4jLoggingEnabled プロパティの値を設定し、サーバを再起動する。

    コード リスト 3-1 の WLST コマンドは、管理サーバの 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 の詳細については、『Oracle Fusion Middleware Oracle WebLogic Scripting Tool ガイド』の「WebLogic Scripting Tool の使用」を参照してください。isLog4jLoggingEnabled の詳細については、『Oracle Fusion Middleware Oracle WebLogic Server MBean Reference』の「LogMBean」を参照してください。

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

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

  • Log4j を使用したサーバの Logger とデフォルト Java Logger を使用したドメインの Logger

  • 標準出力に対する重大度、およびサーバ ログ ファイルに送られるメッセージに対するフィルタを config.xml で指定する方法。

コード リスト 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 クラス $MW_HOME/modules/com.bea.core.weblogic.commons.logging_1.3.0.0.jarcommons-logging.jar ファイルとともに以下のいずれかの場所に格納します。

コード リスト 3-4 では、適切なシステム プロパティを設定して Commons インタフェースを使用する方法を示します。


注意 :

Commons インタフェースは、ここに示す手順で org.apache.commons.logging.LogFactory システム プロパティを使用して実装すると、サーバで実行中のすべてのアプリケーション インスタンスに対して実装されます。他のアプリケーションに影響を与えることなく、Commons ロギングを特定のアプリケーション インスタンスに実装するには、JDK サービス検出メカニズムまたは commons-logging.properties メカニズムを使用して LogFactory を指定します (http://commons.apache.org/logging/apidocs/org/apache/commons/logging/LogFactory.html#getFactory() を参照)。

  1. システム プロパティ org.apache.commons.logging.LogFactoryweblogic.logging.commons.LogFactoryImpl に設定します。

    この LogFactory は、org.apache.commons.logging.Log インタフェースを実装する weblogic.logging.commons.LogFactoryImpl のインスタンスを作成します。

  2. LogFactory から、名前を基準に Commons Log オブジェクトへの参照を取得します。

    この名前は、ログ ファイル内でサブシステム名として表示されます。

  3. Log オブジェクトを使用して、ログ要求を WebLogic ロギング サービスに発行します。

    Commons Log インタフェース メソッドは、オブジェクトを受け付けます。ほとんどの場合、これはメッセージ テキストを含む文字列です。

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

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

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

import org.apache.commons.logging.LogFactory;
import org.apache.commons.logging.Log;

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");
  }
}

ロガーの重大度の指定

WebLogic Server には、以下の重大度を指定できる階層ロガー ツリーがあります。

  • weblogic.i18ngen を使用して XML I18N カタログから生成されたメッセージ カタログ ロガー クラス。

  • Commons org.apache.commons.logging.LogFactory インタフェースの WebLogic Server 実装が有効化されている場合の Commons Logging API のインスタンス。

すべてのロガーは、ツリー内で最も近い親から重大度を継承します。しかし、特定のロガーの重大度を明示的に設定し、その最も近い親に設定されている重大度をオーバーライドすることができます。ロガーの重大度は Administration Console、WLST、またはコマンドラインから設定できます。

WebLogic Server サブシステム ロガーの重大度の指定

メッセージ カタログ ロガーを使用している場合、特定のサブシステムから届くメッセージの重大度は、ルート ロガーの重大度によって決まります。ただし、DeploymentService ロガー、Security ロガー、EJB ロガーなど、個々のサブシステム ロガーのルート ロガーの重大度はオーバーライドすることができます。たとえば、ルート ロガーの重大度が CRITICAL で、その重大度を Security サブシステム ロガーについては NOTICE に、EJB サブシステム ロガーについては WARNING に設定するものとします。この設定は、Administration Console、WLST、またはコマンドラインから行うことができます。

  • Administration Console の場合、サーバの [ロギング全般] タブの [ログの重大度のプロパティ] ボックスに、以下のセミコロン区切りの文字列を入力する。

    Security=Notice;EJB=Warning
    
  • WLST の場合、set コマンドを使用して、LogMBeanLoggerSeverityProperties 属性の値を設定する (『Oracle Fusion Middleware Oracle WebLogic Scripting Tool ガイド』を参照)。

  • コマンドラインの場合、起動コマンドで以下のパラメータを指定する。

    -Dweblogic.Log.LoggerSeverityProperties="Security=Notice;EJB=Warning"
    

    すべてのサブシステム名を網羅したインデックスについては、『Oracle Fusion Middleware Oracle WebLogic Server Message Catalog』を参照してください。サブシステム名は大文字と小文字が区別されるため、このインデックスの「Subsystem」カラムに表示されているとおりに入力する必要があります。

Commons Logging API ロガーの重大度の指定

Commons Logging API を使用する場合、ロガー名は Java パッケージのドット表記法による命名規約に従います。たとえば、ロガーが使用されているクラスの名前に応じて、a.b.FooLogger または a.b.c.Barlogger などのロガー名になります。この場合、それぞれのドット区切りの識別子は、ロガー ツリーのノードとして表されます。この例の場合、ルート ロガーの下に「a」という名前の子ノードがあり、「b」という名前の子ノードが、その親である「a」の下にあります。

ツリー内の任意のレベルにあるパッケージやロガーの重大度をコンフィグレーションすることができます。たとえば、パッケージ a.b の重大度を a.b=Info と指定すると、そのパッケージのすべての子ノードから届く DEBUG メッセージおよび TRACE メッセージがブロックされます。しかし、子ノードの値を明示的に設定すると、親ノードの重大度をオーバーライドすることができます。たとえば、FooLogger の重大度を a.b.FooLogger=Debug と指定すると、このロガーから届くすべてのログ メッセージは許可されますが、a.b 下のその他の子ノードについては、DEBUG メッセージおよび TRACE メッセージがフィルタ処理されます。

パッケージまたはロガーの重大度は、Administration Console、WLST、またはコマンドラインで指定できます。

  • Administration Console の場合、サーバの [ロギング全般] タブの [ログの重大度のプロパティ] ボックスに、以下のセミコロン区切りの文字列を入力する。

    a.b=Info;a.b.FooLogger=Debug 
    
  • WLST の場合、set コマンドを使用して、LogMBeanLoggerSeverityProperties 属性の値を設定する (『Oracle Fusion Middleware Oracle WebLogic Scripting Tool ガイド』を参照)。

  • コマンドラインの場合、起動コマンドで以下のパラメータを指定する。

    -Dweblogic.Log.LoggerSeverityProperties="a.b=Info;a.b.FooLogger=Debug"
    

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

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

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

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

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


注意 :

WebLogic Server では、ログ ファイルが大きくなり過ぎないように、500MB のしきい値サイズ制限が設定されており、それを超えると強制的にローテーションが行われます。

ログ ファイル ローテーションの設定に関する詳細については、Oracle Fusion Middleware Oracle WebLogic Server の Administration Console オンライン ヘルプの「ログ ファイルのローテーション」を参照してください。

サーバ、ドメイン、または HTTP アクセス ログ ファイルのローテーションをすぐに行う場合は、LogRuntime.forceLogRotation() メソッドを使用します。『Oracle Fusion Middleware Oracle WebLogic Server MBean Reference』の「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> <ログ ファイル
C:\diablodomain\servers\myserver\logs\myserver.log はローテーションされます。処理が停止した場合は、ログ ファイルを再オープンしてください。これは、Windows など一部のプラットフォームで起こる可能性があります。>
<Mar 2, 2005 3:23:01 PM EST> <Info> <Log Management> <BEA-170018> <ログ ファイルは C:\diablodomain\servers\myserver\logs\myserver.log00001 までローテーションされました。ログ メッセージは引き続き C:\diablodomain\servers\myserver\logs\myserver.log に記録されます。>

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

デフォルトでは、ローテーションされたファイルはログ ファイルと同じディレクトリに格納されます。アーカイブされたログ ファイルの格納先に別のディレクトリを指定するには、Administration Console を使用するか、コマンドラインから LogFileMBeanLogFileRotationDir プロパティを設定します。『Oracle Fusion Middleware Oracle WebLogic Server MBean Reference』の「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> <ログ ファイル
C:\Oracle\Middleware\wlserver_10.3\samples\domains\medrec\servers\MedRecServer\logs\medrec.log はローテーションされます。処理が停止した場合は、ログ ファイルを再オープンしてください。これは、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> <ログ ファイルは C:\Oracle\Middleware\wlserver_10.3\samples\domains\medrec\servers\MedRecServer\logs\medrec.log00001 までローテーションされました。ログ メッセージは引き続き C:\Oracle\Middleware\wlserver_10.3\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 の使用に関する詳細については、『Oracle Fusion Middleware Oracle WebLogic Scripting Tool ガイド』の「MBean の移動 (WLST オンライン)」を参照してください。RedirectStdoutToServerLogEnabled の詳細については、『Oracle Fusion Middleware Oracle WebLogic Server MBean Reference』の「LogMBean」を参照してください。