管理およびコンフィグレーション ガイド

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

ロギングとデバッグのコンフィグレーション

この節では、以下の項目について説明します。

 


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

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

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

 


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

このリリースには commons-logging インタフェースが用意されています。このインタフェースは commons.logging.LogFactory および Log インタフェースの実装を提供します。このインタフェースには、org.apache.commons.logging.LogFactory クラスの拡張が含まれています。このクラス拡張は、ロギング モジュールの LoggingService に委任される org.apache.commons.logging.Log の実装を作成するファクトリとして動作します。このデフォルト実装の名前は weblogic.logging.commons.LogFactoryImpl です。

http://jakarta.apache.org/commons/logging/apidocs/index.html を参照してください。

ログ ファクトリの設定

ここでは、システム プロパティを使用してログ ファクトリを設定する方法について説明します。

ログの重大度の使用

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

   TRACEDEBUGINFONOTICEWARNINGERRORCRITICALALERTEMERGENCY

ロガー、ハンドラ、およびユーザ アプリケーションに対してログの重大度を設定できます。ロガーに対して重大度を設定した場合、いずれのハンドラも、ロガーによって拒否されたイベントを受信しません。たとえば、ロガーに対してログ レベルを NOTICE に設定した場合、ハンドラは、INFO レベルのイベントを受信しません。ハンドラに対してログ レベルを設定した場合、制約はそのハンドラのみに適用され、他のハンドラには適用されません。たとえば、ファイル ハンドラに対して DEBUG をオフにすると、DEBUG メッセージはログ ファイルには書き込まれませんが、標準出力には書き込まれます。

ユーザ (Oracle CEP モジュールの所有者またはユーザ アプリケーションの所有者) は、個別モジュールに対して Apache commons logging で使用されるロギング カテゴリ タイプを表す名前を自由に定義できます。ただし、カテゴリ名がパッケージ名として定義されている場合は、命名規則に基づいて、ロギング レベル階層がデフォルトで想定されます。たとえば、2 つのモジュールのロギング カテゴリ名が com.oracle.foocom.oracle.foo.bar である場合は、com.oracle.foocom.oracle.foo.bar のルート ノードになります。このように、子ノードが親をオーバーライドしない限り、親ノード (com.oracle.foo) に適用されるロギング レベルが自動的に com.oracle.foo.bar に適用されます。

つまり、明示的に重大度がコンフィグレーションされた最も近い親から重大度が継承されない限り、ノードに対して指定されているロギングの重大度が有効です。ルート ノードは常に明示的にコンフィグレーションされるため、その他の設定がされていない場合は、すべてのノードがルートから重大度を継承します。

表 12-1 にログ メッセージの重大度を示します。

表 12-1 メッセージの重大度
重大度
意味
TRACE
診断アクション ライブラリからのメッセージに対して使用します。サーバおよびアプリケーション クラスの診断インスツルメンテーションを有効にすると、TRACE メッセージはメソッドの要求パスに従います。
DEBUG
デバッグ メッセージが生成されました。
INFO
通常の処理を報告するために使用する、低レベルの情報メッセージ。
NOTICE
重要度が高い情報メッセージ。
WARNING
問題が疑われる処理またはコンフィグレーションが検出されましたが、通常の処理に影響はありません。
ERROR
ユーザ エラーが発生しました。システムまたはアプリケーションは、割り込みやサービスの限定的な低下を起こすことなくエラーに対処できます。
CRITICAL
システム エラーまたはサービス エラーが発生しました。システムは回復できますが、サービスが一時的に失われたり、永久的なサービス低下が発生したりする場合があります。
ALERT
システムの特定のサービスが使用不能の状態にあり、システムの他の部分は引き続き機能しています。自動回復を実行できません。この問題を解決するには、管理者による即時対応が必要です。
EMERGENCY
サーバが使用不能な状態にあります。この重大度は、重大なシステム障害または問題があることを示します。

重大度の低いメッセージが数多く生成され、重大度の高いメッセージは少なくなります。たとえば、通常の環境では、INFO メッセージが多く生成され、EMERGENCY メッセージは生成されません。

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

システムはメッセージを標準出力および指定されたログ ファイルに書き込みます。メッセージはタイムスタンプ、重大度、サブシステム、およびメッセージ テキストとスタック トレース (ある場合) で構成されます。各属性は山括弧で囲みます。

サーバ ログ ファイル内のメッセージの例を次に示します。

<May 02, 2007 10:46:51 AM EST> <Notice> <CommonTestSubsystem> <BEA-123456> 
<Another Commons test message>

標準出力および標準エラーへの出力のフォーマット

システムがメッセージを標準出力に書き込むとき、出力にプレフィックス #### は含まれておらず、Server Name、Machine Name、Thread ID、User ID、Transaction ID、Diagnostic Context ID、および Raw Time Value の各フィールドは含まれていません。

前の節のメッセージが標準出力にどのように出力されるかを次の例に示します。

<Sept 22, 2004 10:51:10 AM EST> <Notice> <WebLogicServer> <BEA-000360> <Server started in RUNNING mode>

この例では、メッセージ属性は、Locale-formatted Timestamp、Severity、Subsystem、Message ID、および Message Text です。

OSGI フレームワーク ロガー

Oracle CEP には、OSGi フレームワークよりも前に起動する低レベルのフレームワーク ロガーがあります。このロガーは OSGi フレームワーク内部のロギング イベントを報告するために使用され、ロギング サブシステムがコンフィグレーションされるまでロギング サブシステムのカスタム デフォルトとして機能します。

たとえば、ユーザに表示されるログ メッセージのレベルまたは重大度は、config.xml での設定より低く、コンソールの Launcher コマンドラインまたはログ ファイルでの設定と同じまたはそれより高い可能性があります。ロギング サブシステムが起動するまで、ログ メッセージはフレームワーク ロガーから送信され、フレームワークのロギング レベルを使用してメッセージがフィルタ処理されます。

 


Commons Logging API の使い方

Commons Logging を使用する方法は次のとおりです。

  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 オブジェクトを使用して、ロギング サービスにログ要求を発行します。
  6. Commons Log インタフェース メソッドは、オブジェクトを受け取ります。ほとんどの場合、これはメッセージ テキストを含む文字列です。

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

  7. weblogic.logging.commons.LogImpl ログ メソッドは、メッセージをサーバ ログに送ります。
  8. コード リスト 12-1 Commons のコード例
    import org.apache.commons.logging.LogFactory;
    import org.apache.commons.logging.Log;
    public class MyCommonsTest {
      public void testCommonsLogging() {
        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");
      }
    }

 


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

以下の節では、Oracle CEP ロギングのコンフィグレーションについて説明します。

logging-service

この節では、<logging-service> コンフィグレーション オブジェクトについて説明します。

表 12-2 <logging-service> のコンフィグレーション パラメータ
パラメータ
説明
log-file-config
String
ログ ファイルとそのローテーション ポリシーのコンフィグレーション。
log-file」を参照してください。
stdout-config
String
stdout 出力のコンフィグレーションに使用される stdout コンフィグレーション オブジェクトの名前。「log-stdout」を参照してください。

logger-severity

String
ハンドラに伝播されるメッセージのしきい値の重要度を定義します。
デフォルト値は Info です。Debug および Trace メッセージを表示するには、logger-severityDebug または Trace のいずれかにコンフィグレーションします。有効な値は、EmergencyAlertCriticalErrorWarningNoticeInfoDebugTrace です。
name
String
このコンフィグレーション オブジェクトの名前。
logger-severity-properties
<entry> の 1 つまたは複数の子要素。
<entry> 要素で囲まれた名前と値のペアのリストです。個別モジュールとモジュールのロギングの重大度を表します。これらの重大度は Oracle CEP サーバのデフォルトの重大度をオーバーライドします。

log-stdout

この節では、log-stdout コンフィグレーション オブジェクトについて説明します。

表 12-3 log-stdout のコンフィグレーション パラメータ
パラメータ
説明
stack-trace-depth
Integer
stdout に表示するスタック トレース フレームの数。
デフォルト値 -1 は、すべてのフレームが表示されることを意味します。
stack-trace-enabled
Boolean
true の場合、ログに記録されたメッセージにスタック トレースが含まれているときは、スタック レースがコンソールにダンプされます。デフォルト値は true です。
stdout-severity
String
stdout に送信されるメッセージのしきい値の重大度。デフォルト値は Notice です。

有効な値は、EmergencyAlertCriticalErrorWarningNoticeInfoDebugTrace です。

name
String
このコンフィグレーション オブジェクトの名前。

log-file

この節では、log-file コンフィグレーション オブジェクトについて説明します。

表 12-4 log-file のコンフィグレーション パラメータ
パラメータ
説明
number-of-files-limited
Boolean
true の場合、ローテーションされた古いファイルは削除されます。デフォルトは false です。
rotation-type
String
ローテーションをサイズに基づいて実行するか、時間に基づいて実行するか、または実行しないかを指定します。

有効な値は、bySizebyTimenone です。

rotation-time
String
k:mm 形式の時間です。k は 24 時間表記で指定した時間で、mm は分です。
デフォルトは 00:00 です。
rotation-time-span-factor
Long
時間ベースのログ ローテーションの頻度となるミリ秒数を決定するために、時間間隔に適用される係数。デフォルトは 3600000 です。
rotated-file-count
Integer
number-of-files-limitedtrue の場合に、ローテーションされた古いファイルをいくつ保持するかを指定します。デフォルト値は 7 です。
rotation-size
Integer
ログ ファイルがローテーションされるサイズのしきい値 (KB 単位)。デフォルトは 500 です。
rotation-time-span
Integer
時間ベースのすべてのログ ローテーションについて、間隔を指定します。デフォルト値は 24 です。
base-log-file-name
String
ログ ファイル名。デフォルト値は server.log です。
rotate-log-on-startup-enabled
Boolean
true の場合、ログ ファイルは起動時にローテーションされます。デフォルト値は true です。
log-file-severity
String
ログ ファイルに書き込まれるメッセージの最も低い重大度を指定します。デフォルト値は Trace です。
有効な値は、EmergencyAlertCriticalErrorWarningNoticeInfoDebugTrace です。
log-file-rotation-dir
String

ローテーションされた古いファイルを格納するディレクトリを指定します。

設定しない場合、古いファイルは基準ログ ファイルと同じディレクトリに格納されます。

name
String
このコンフィグレーション オブジェクトの名前。

個別モジュールの重大度のコンフィグレーション

Oracle CEP の個別モジュールについて、ロギングの重大度を指定できます。この重大度は、Oracle CEP のデフォルトのロギング重大度 (Notice) をオーバーライドします。個別モジュールの重大度を指定するには、モジュール パッケージの名前とロギングの重大度を (サーバの config.xml ファイル内のログ コンフィグレーションでの <logger-severity-properties> 要素として) 指定します。複数のパッケージまたはロガーを <logger-severity-properties> 要素に名前と値のペアとして指定できます。

次の config.xml サンプルは、Oracle CEP の複数のモジュールについてロギング重大度を変更する方法を示しています。

  <logging-service>
<name>myLogService</name>
<logger-severity>Warning</logger-severity>
<logger-severity-properties>
<entry>
<key>com.bea.wlevs.ede</key>
<value>Debug</value>
</entry>
<entry>
<key>sample.HelloWorld</key>
<value>Debug</value>
</entry>
<entry>
<key>com.bea.wlevs.cep.core.EPRuntimeImpl</key>
<value>Debug</value>
</entry>
</logger-severity-properties>
<stdout-config>myStdoutConfig</stdout-config>
<log-file-config>myLogFileConfig</log-file-config>
</logging-service>

この例では、サーバのデフォルトのロギング重大度は WARNING です。ただし、com.bea.wlevs.ede パッケージ、sample.HelloWorld ユーザ アプリケーション、および com.bea.wlevs.cep.core.EPRuntimeImpl クラスに含まれるモジュールのロギング重大度は DEBUG です。

 


デバッグ

以下の節では、Oracle CEP デバッグ機能の使用方法を説明します。

システム プロパティを使用したデバッグのコンフィグレーション

以下の手順に従って、Java コマンドラインでシステム プロパティを設定できます。

  1. フラグの前に -D を付けてプロパティを作成します。
  2. プロパティを true に設定してフラグをオンにします。

例 : -Dcom.bea.core.debug.DebugSDS=true

コンフィグレーション ファイルを使用したデバッグのコンフィグレーション

コンフィグレーション ファイルからデバッグをコンフィグレーションするには、以下の手順を実行します。

  1. フラグ名から "com.bea.core.debug." を削除して、XML タグを作成します。
  2. フラグを true に設定してフラグをオンにします。
  3. debug-properties タグでラップします。
  4. ロギング サービス スタンザで logger-severityDebug に設定します。
  5. stdout コンフィグレーション スタンザで stdout-severity を Debug に設定します。

サンプル デバッグ コンフィグレーション」を参照してください。

サポート対象のデバッグ フラグ

次の表に、このリリースでサポートされているデバッグ フラグを示します。

表 12-5 デバッグ フラグ
デバッグ フラグ
説明
com.bea.core.debug.DebugSDS
SDS (Simple Declarative Services)
com.bea.core.debug.DebugSDS.stdout
SDS デバッグ文字列を stdout に送る

com.bea.core.debug.DebugServiceHelper

サービス ヘルパー
com.bea.core.debug.DebugServiceHelper.stdout
サービス ヘルパーのデバッグ文字列を stdout に送る
com.bea.core.debug.servicehelper.dumpstack
サービス ヘルパーがタイムアウトしたときにスタック トレースをダンプ
com.bea.core.debug.DebugSCP
Simple Configuration Provider
com.bea.core.debug.DebugSCP.stdout
Simple Configuration Provider のデバッグ文字列を stdout に送る
com.bea.core.debug.DebugCM
Configuration Manager
com.bea.core.debug.DebugCM.stdout
Configuration Manager のデバッグ文字列を stdout に送る
com.bea.core.debug.DebugCSSServices
CSS サービス
com.bea.core.debug.DebugCSSServices.stdout
CSS サービスのデバッグ文字列を stdout に送る
com.bea.core.debug.DebugCSS
CSS
com.bea.core.debug.DebugCSS.stdout
CSS のデバッグ文字列を stdout に送る
com.bea.core.debug.DebugBootBundle
ブート デバッグ
com.bea.core.debug.DebugBootBundle.stdout
ブート デバッグのデバッグ文字列を stdout に送る
com.bea.core.debug.DebugJTA2PC
JTA 2PC
com.bea.core.debug.DebugJTA2PCDetail
JTA 2PCDetail
com.bea.core.debug.DebugJTA2PCStackTrace
JTA 2PCStackTrace
com.bea.core.debug.DebugJTAGateway
JTA ゲートウェイ
com.bea.core.debug.DebugJTAGatewayStackTrace
JTA GatewayStackTrace
com.bea.core.debug.DebugJTAHealth
JTA ヘルス
com.bea.core.debug.DebugJTALifecycle
JTA ライフサイクル
com.bea.core.debug.DebugJTALLR
JTA LLR
com.bea.core.debug.DebugJTAMigration
JTA の移行
com.bea.core.debug.DebugJTANaming
JTA の命名
com.bea.core.debug.DebugJTANamingStackTrace
JTA NamingStackTrace
com.bea.core.debug.DebugJTANonXA
JTA NonXA
com.bea.core.debug.DebugJTAPropagate
JTA の伝播
com.bea.core.debug.DebugJTARecovery
JTA の回復
com.bea.core.debug.DebugJTAResourceHealth
JTA ResourceHealth
com.bea.core.debug.DebugJTATLOG
JTA TLOG
com.bea.core.debug.DebugJTAXA
JTA XA
com.bea.core.debug.DebugJTAXAStackTrace
JTA XAStackTrace
com.bea.core.debug.DebugStoreAdmin
ストア管理
com.bea.core.debug.DebugStoreIOPhysical
Store IOPhysical
com.bea.core.debug.DebugStoreIOPhysicalVerbose
Store IOPhysicalVerbose
com.bea.core.debug.DebugStoreIOLogical
Store IOLogical
com.bea.core.debug.DebugStoreIOLogicalBoot
Store IOLogicalBoot
com.bea.core.debug.DebugStoreXA
ストア XA
com.bea.core.debug.DebugStoreXAVerbose
Store XAVerbose
com.bea.core.debug.DebugConfigurationRuntime
ランタイム MBean からのランタイム情報
com.bea.core.debug.DebugJDBCInternal
JDBC 内部
com.bea.core.debug.DebugJTAJDBC
JTA JDBC
com.bea.core.debug.DebugJDBCSQL
JDBC SQL
com.bea.core.debug.DebugJDBCRMI
JDBC RMI
com.bea.core.debug.DebugJDBCConn
JDBC 接続
com.bea.core.debug.DebugNetIO
NetIO
com.bea.core.debug.DebugOX
OSGi から JMX (OX) へ
com.bea.core.debug.DebugOX.stdout
OSGi から JMX (OX) へ、デバッグを stdout に送る

サンプル デバッグ コンフィグレーション

次に示すコード例は、config.xml ファイルで SDS (Simple Declarative Services) デバッグをオンにするサンプル デバッグ コンフィグレーションです。

コード リスト 12-2 サンプル デバッグ コンフィグレーション
<config>
   <debug>
      <debug-properties>
         <DebugSDS>true</DebugSDS>
      </debug-properties>
   </debug>

   <logging-service>
      <logger-severity>Debug</logger-severity>
      <stdout-config>logStdout</stdout-config>
      <log-file-config>logFile</log-file-config>
   </logging-service>

   <log-file>
   <name>logFile</name>
   <log-file-severity>Debug</log-file-severity>
   <number-of-files-limited>true</number-of-files-limited>
   <rotated-file-count>4</rotated-file-count>
   <rotate-log-on-startup-enabled>true</rotate-log-on-startup-enabled>
   </log-file>

   <log-stdout>
      <name>logStdout</name>
      <stdout-severity>Debug</stdout-severity>
   </log-stdout>
</config>

 


Log4j

以下の節では、Log4j の使用方法に関する情報を示します。

Log4j について

Log4j は、アプリケーションにログ ステートメントを指定するために開発されたオープン ソースのツールです。Log4j には 3 つの主要なコンポーネントがあります。

Log4j Java ロギング機能は、Apache Foundation の Jakarta プロジェクトによって開発されました。以下を参照してください。

ロガー

Log4j には Logger クラスが定義されています。アプリケーションでは、それぞれユニークな名前を付けた複数のロガーを作成できます。Log4j の一般的な使用方法として、アプリケーションはログ メッセージを送信する各アプリケーション クラスの Logger インスタンスを作成します。ロガーはネームスペース階層内に存在し、階層の上位のロガーから動作を継承します。

アペンダ

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

レイアウト

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

log4j のプロパティ

デフォルトのコンフィグレーション ファイルは log4j.properties です。この指定は、log4j.configuration システム プロパティを使用してオーバーライドできます。https://www.qos.ch/shop/products/log4j/log4j-Manual.jsp を参照してください。

log4j.properties ファイルの例を次に示します。

コード リスト 12-3 log4j.properties ファイルの例
   log4j.rootLogger=debug, R 
   log4j.appender.R=org.apache.log4j.RollingFileAppender
   log4j.appender.R.File=D:/log4j/logs/mywebapp.log
   log4j.appender.R.MaxFileSize=10MB
   log4j.appender.R.MaxBackupIndex=10
   log4j.appender.R.layout=org.apache.log4j.PatternLayout
   log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
   log4j.logger=DEBUG, R

Log4j ロギングの有効化

Log4j Logger へのロギングを指定するには、コマンドラインで以下のシステム プロパティを設定します。

   -Dorg.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryimpl
   -Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
   -Dlog4j.configuration=<URL>/log4j.properties

  ページの先頭       前  次