ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Serverログ・ファイルの構成とログ・メッセージのフィルタ処理
12c リリース1 (12.1.1)
B65917-02
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

3 WebLogicロギング・サービスの構成

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

この章の内容は以下のとおりです。

構成のシナリオ

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

以下に、ロギングの構成シナリオの一部を示します。

ロギング・サービス構成の概要

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

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

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

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

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


注意:

ユーザーがロガーまたはハンドラの構成を変更できるには、java.util.logging.LoggingPermissionクラス(http://docs.oracle.com/javase/6/docs/api/java/util/logging/LoggingPermission.htmlを参照)が必要です。本番環境では、現在のユーザーに対してjava.util.logging.LoggingPermissionを有効にしたJavaセキュリティ・マネージャの使用をお薦めします。

『Oracle WebLogic Serverセキュリティのプログラミング』のJavaセキュリティ・マネージャを使用したWebLogicリソースの保護に関する項、および「Java Logging Overview」(http://docs.oracle.com/javase/6/docs/technotes/guides/logging/overview.html)を参照してください。


以下の節では、WebLogic Serverのロギング動作を構成する際の基準点について詳細を説明します。

ログの重大度の使用

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

TRACEDEBUGINFONOTICEWARNINGERRORCRITICALALERTEMERGENCY

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

サポートされている重大度の詳細は、Oracle WebLogic Server APIリファレンスweblogic.logging.Severitiesクラスに関する説明を参照してください。

ハンドラおよびロガーに対するログ・レベルの設定は、管理コンソール、WLST、またはコマンド・ラインで行います。ロガーのセキュリティ・レベルの設定を参照してください。ロガーおよびハンドラは、APIでも構成できます。「ロガーとハンドラに対する重大度の設定」を参照してください。

ログ・フィルタの使用

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

フィルタをロガーやハンドラに関連付けることができます。ハンドラに対するフィルタの構成は、管理コンソール、WLST、またはコマンド・ラインで行います。標準出力、ログ・ファイル、ログ・ブロードキャスタ、およびメモリー・ハンドラに対してフィルタを定義するためのLogFilterMBean属性があります。LogFilterMBean(Oracle WebLogic Server MBeanリファレンスに説明があります)は、ユーザーIDおよびサブシステムを基にしたフィルタ条件を定義します。ロガーに対するフィルタの構成にはAPIのみを使用できます。

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

ロギングの構成タスク: 主な手順

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

  1. 管理コンソールを使用して、ログ・ファイルを管理し、次のロギング・オプションを構成します。

    1. ドメイン・ログおよびサーバー・ログのファイル名と場所、ローテーション・パターン、アーカイブされたログ・ファイルの場所、ログ・ファイル数が格納されます。Oracle WebLogic Server管理コンソール・オンライン・ヘルプログの表示と構成に関する項を参照してください。

    2. サーバーが標準出力に送信するメッセージの種類。Oracle WebLogic Server管理コンソール・オンライン・ヘルプ標準出力するメッセージの指定に関する項を参照してください。

    3. サーバー・インスタンスがドメイン・ログに送信するメッセージ。Oracle WebLogic Server管理コンソール・オンライン・ヘルプドメイン・ログへのメッセージの転送に関する項を参照してください。

    4. HTTPリクエストに対するログ・ファイル。Oracle WebLogic Server管理コンソール・オンライン・ヘルプHTTPログの有効化と構成に関する項を参照してください。

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

    6. メッセージの宛先を指定し、重大度や他の条件によるログ・メッセージのフィルタ処理を構成します。Oracle WebLogic Server管理コンソール・オンライン・ヘルプログ・メッセージのフィルタ処理に関する項を参照してください。「ロガーの重大度の指定」も参照してください。

  2. または、WebLogic Scripting Toolを使用して、メッセージ・ハンドラに対するログ・メッセージのフィルタ処理を構成します。『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プロジェクトに関する詳細は、http://logging.apache.org/log4j/を参照してください。

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に基づいた実装がデフォルトで使用されます。ただし、WebLogicロギング・サービスでLog4jを再構成できます。

デフォルトのJavaロギングのかわりにLog4jを使用するには、次の手順を実行します。

  1. log4j.jarファイルのコピーを取得します。WebLogic ServerではLog4jバージョンを配布していませんが、次の場所にあるApacheからダウンロードできます。

    http://logging.apache.org/log4j/

  2. log4j.jarファイルとWL_HOME/server/lib/wllog4j.jarファイルをサーバーのクラスパスにコピーします。この操作は、両ファイルをDOMAIN_NAME/libディレクトリにコピーするだけで実行できます。これで、サーバーの起動中に両ファイルは動的にサーバーのクラスパスに追加されます。

    これらの.jarファイルを別の場所に格納する場合は、両方を同じディレクトリに格納し、サーバーのクラスパスに指定されているパスを、そのディレクトリに変更する必要があります。

  3. 次のいずれかのメソッドを使用し、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コードのサンプルです。

WebLogic ServerロギングのLog4jを構成および有効にするためのWLSTの使い方

この項では、WLSTを使用して、デフォルトのJavaロギングのかわりにLog4jロギングを構成して有効にする方法について説明します。Javaロギングは、クライアント側およびサーバー側のロギングのデフォルトです。Log4jは、サーバー側でのみ使用できます。クライアント側ではサポートされていません。

例3-1は、管理サーバーでLog4j Loggerへのロギングを有効にするための、Log4jLoggingEnabledプロパティ値の設定を示します。このスクリプトの実行後、設定を有効化するにはサーバーを再起動する必要があります。

例3-1 Log4jロギングの有効化

#invoke WLST
C:\>java weblogic.WLST
#connect WLST to an Administration Server
wls:/offline> connect('username','password') 
#navigate to the writable MBean configuration tree
wls:/mydomain/serverConfig> edit()
wls:/mydomain/edit> startEdit()
#set cmo to the server log config
wls:/mydomain/edit !> cd("Servers/myserver/Log/myserver")
#set log4j logging to true
wls:/mydomain/edit/Servers/myserver/Log/myserver !> cmo.setLog4jLoggingEnabled(true)
#save and activate the changes
wls:/mydomain/edit/Servers/myserver/Log/myserver !> save()
wls:/mydomain/edit/Servers/myserver/Log/myserver !> activate()

isLog4jLoggingEnabledの詳細は、Oracle WebLogic Server MBeanリファレンスLogMBeanを参照してください。

管理サーバーのみに存在するドメインのLoggerだけでなく、サーバーのLoggerでもLog4jを使用できます。ドメインのLog4j Logger参照は、weblogic.logging.log4j.Log4jLoggingHelper.getLog4jDomainLogger()メソッドを呼び出すと利用可能になります。例3-2は、Log4jを使用するためのサーバーのLoggerと、デフォルトのJava Loggerを使用するためのドメインのLoggerを構成する方法を示します。

例3-2 Log4jのサンプル・コード

import org.apache.log4j.Logger;
import weblogic.logging.log4j.Log4jLoggingHelper;
import weblogic.logging.LoggerNotAvailableException;
/**
 * This example shows how to use the Log4j server Logger.
 */
public class MyLog4jTest {
  public void testWLSLog4j() {
    try {
      Logger logger = Log4jLoggingHelper.getLog4jServerLogger();
      logger.addAppender(myAppender); // The Appender is configured using either the log4j props file or other custom mechanism.
      logger.info("Test log message");
    } catch(LoggerNotAvailableException lex) {
    System.err.println("Unable to get a reference to the log4j Logger: "+
      lex.getMessage())
    }
  }
}

例3-3はLog4jロギング構成のサンプルで、標準出力に対する重大度、およびサーバー・ログ・ファイルに送信されるメッセージに対するフィルタをconfig.xmlファイルで指定する方法を示します。

例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アペンダに対する重大度とフィルタの設定」を参照してください。

WLSTの使用に関する詳細は、『Oracle WebLogic Scripting Tool』のWebLogic Scripting Toolの使用に関する項を参照してください。

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、サブシステム名、および文字列メッセージ引数を取ります。org.apache.commons.logging (http://commons.apache.org/logging/apidocs/index.html)を参照してください。

  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");
    // Log String objects
    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のインスタンス。

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

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

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

  • 管理コンソールから、サーバーの「ロギング」「一般」タブのロガーの重大度プロパティ・ボックスで次のエントリを作成します。各文字列はこのプロパティの各行に入力されます。つまり、各文字列の後で[Enter]キーを押して「保存」をクリックします。

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

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

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

    すべてのサブシステム名の完全なインデックスについては、『Oracle WebLogic Serverエラー・メッセージ・リファレンス』を参照してください。サブシステム名は大文字と小文字が区別されるため、この索引の「サブシステム」列に表示されているとおりに入力する必要があります。

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メッセージがフィルタ処理されます。

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

  • 管理コンソールの場合、サーバーの「ロギング」>「全般」タブの「ロガー重大度プロパティ」ボックスに、以下のセミコロン区切りの文字列を入力します。

    a.b=Info;a.b.FooLogger=Debug 
    
  • WLSTの場合、setコマンドを使用して、LogMBeanLoggerSeverityProperties属性の値を設定します(『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 WebLogic Server管理コンソール・オンライン・ヘルプ本番モードへの変更に関する項を参照してください。

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


注意:

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


ログ・ファイル・ローテーションの設定に関する詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプログ・ファイルのローテーションに関する項を参照してください。

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

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

例3-5 オン・デマンドのログ・ローテーション

#invoke WLST
C:\>java weblogic.WLST
#connect WLST to an Administration Server
wls:/offline> connect('username','password')
#navigate to the ServerRuntime MBean hierarchy
wls:/mydomain/serverConfig> serverRuntime()
wls:/mydomain/serverRuntime>ls()
#navigate to the server 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 :
#force the immediate rotation of the server log file
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.>

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

デフォルトでは、ローテーションされたファイルはログ・ファイルと同じディレクトリに格納されます。アーカイブされたログ・ファイルの格納先に別のディレクトリを指定するには、管理コンソールを使用するか、コマンドラインからLogFileMBeanLogFileRotationDirプロパティを設定します。Oracle 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:\Oracle\Middleware\wlserver_12.1\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:\Oracle\Middleware\wlserver_12.1\samples\domains\medrec\servers\MedRecServer\logs\medrec.log00001. 
Log messages will continue to be logged in C:\Oracle\Middleware\wlserver_12.1\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リスナーの例については、第5章「メッセージのサブスクライブ」を参照してください。

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 WebLogic Scripting Tool』のMBeanのナビゲート(WLSTオンライン)に関する項を参照してください。RedirectStdoutToServerLogEnabledの詳細は、Oracle WebLogic Server MBeanリファレンスLogMBeanを参照してください。