14 ロギングとデバッグ

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

Oracle Stream Analyticsでは、Commons Apacheログ・フレームワークOSGiフレームワーク・ロガーおよびLog4jロガーのロギング・システムがサポートされます。Oracle Stream Analyticsでは、様々なデバッグ・オプションも提供され、これらのオプションを有効または無効にすることにより、使用するOracle Stream Analyticsアプリケーションを診断できます。

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

Oracle Stream Analyticsセキュリティ監査ロギングの詳細は、「セキュリティ監査プログラム」を参照してください。

14.1 ロギングの構成シナリオ

様々なロギング構成シナリオがあります。一般的なシナリオを次にあげます。

  • DEBUGメッセージおよびINFOメッセージがログ・ファイルに記録されないようにします。

  • HTTPサブシステムからのINFOレベルのメッセージを、標準出力ではなくログ・ファイルにパブリッシュできるようにします。

  • WARNINGレベル以上のメッセージをハンドラがパブリッシュするように指定します。

  • サーバー全体のデフォルトのロギング・レベルを指定し、特定のモジュールにデフォルトのロギング・レベルをオーバーライドさせます。たとえば、サーバーのデフォルトのロギング・レベルをWARNINGにする一方、モジュールのロギング・レベルをDEBUGにすることができます。

  • デプロイしたアプリケーションのロギング・レベルを構成します。ログ・メッセージをサーバー全体の1個のログ・ファイルに出力する必要があり、サーバー・モジュールからもそのログ・ファイルにメッセージを記録する場合は、Commons Apacheログ・フレームワークをアプリケーションで使用する必要があります。

14.2 Commons Apacheログ・フレームワーク

この項では、Commons Apacheログ・フレームワークについて説明します。

Oracle Stream Analyticsでは、commons-loggingインタフェースが提供されます。このインタフェースでは、commons.logging.LogFactoryおよびLogインタフェースの実装が提供されます。そのインタフェースには、ロギング・モジュールのLoggingServiceに委任されるorg.apache.commons.logging.Logの実装を作成するファクトリとして動作するorg.apache.commons.logging.LogFactoryクラスの拡張が含まれています。デフォルトの実装名はweblogic.logging.commons.LogFactoryImplです。http://jakarta.apache.org/commons/logging/apidocs/index.htmlを参照してください。

14.2.1 ログ・ファクトリの設定

次のリストは、システム・プロパティを使用したログ・ファクトリの設定に関する情報を示します。

  • 最高の優先度はシステム・プロパティorg.apache.commons.logging.LogFactoryに対して設定されています。

  • 次のコマンドを使用して、コマンド・ラインからロギングを設定できます。

    -Dorg.apache.commons.logging.LogFactory=weblogic.logging.commons.LogFactoryImpl
    
  • 次のように、プログラムによってロギングを実装できます。

    import org.apache.commons.logging.LogFactory;
    System.setProperty(
        LogFactory.FACTORY_PROPERTY,
        "weblogic.logging.commons.LogFactoryImpl"
    );
    
  • weblogic.logging.commons.LogFactoryImplは、ログ・ファクトリが明示的に設定されない場合、デフォルトのログ・ファクトリです。

  • 別のロギング実装を使用するには、標準のcommons loggingファクトリ実装を使用する必要があります。org.apache.commons.logging.impl.LogFactoryImplの実装はcommons logging jarで使用できます。例:

    -Dorg.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryImpl
    

    または、次のようにプログラミングしても同じです。

    System.setProperty(
        LogFactory.FACTORY_PROPERTY,
        "org.apache.commons.logging.impl.LogFactoryImpl"
    );

14.2.2 ログの重大度レベルの使用

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

TRACEDEBUGINFONOTICEWARNINGERRORCRITICALALERTEMERGENCY

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

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

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

表14-1にログ・メッセージの重大度レベルを示します。

表14-1 ログ・メッセージ重大度

重大度 意味
TRACE

診断アクション・ライブラリからのメッセージの場合に使用します。サーバーおよびアプリケーション・クラスの診断インストゥルメンテーションを有効にすると、TRACEメッセージはメソッドのリクエスト・パスに従います。

DEBUG

デバッグ・メッセージが生成されました。

INFO

通常の処理を報告するために使用する、低レベルの情報メッセージ。

NOTICE

重要度が高い情報メッセージ。

WARNING

不審なオペレーションまたは構成が発生しましたが、通常のオペレーションには影響しません。

ERROR

ユーザー・エラーが発生したことを示します。システムまたはアプリケーションでは、割込みやサービスの限定的な低下を起こすことなくエラーに対処できます。

CRITICAL

システム・エラーまたはサービス・エラーが発生したことを示します。システムをリカバリできますが、サービスの一時的な損失や永久的な低下が発生する場合があります。

ALERT

特定のサービスが使用不能の状態にある一方で、システムのほかの部分は依然として機能しています。自動リカバリを実行できません。この問題を解決するには、管理者がすぐに措置を講じる必要があります。

EMERGENCY

サーバーが使用不能な状態にあります。この重大度は、重大なシステム障害または問題があることを示します。

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

14.2.3 ログ・ファイル

デフォルトでOracle Stream Analyticsサーバーは、/Oracle/Middleware/my_oep/user_projects/domains/DOMAIN_DIR/servernameディレクトリにあるserver.logファイルおよびconsoleoutput.logファイルにログ・メッセージを書き込みます。ここで、DOMAIN_DIRはドメイン・ディレクトリ(my_domainなど)を表し、servernameはサーバー・インスタンス・ディレクトリ(myServer1など)を表します。

ログ・ファイル属性の構成は、「log-file」を参照してください。

14.2.4 ログ・メッセージ・フォーマット

Oracle Stream Analyticsサーバーは、書き込むログ・ファイルのタイプによって異なるフォーマットでログ・メッセージを書き込みます。

14.2.4.1 ログ・ファイルへの出力の形式

システムはメッセージを指定されたログ・ファイルに書き込み、メッセージは、####接頭辞、タイムスタンプ重大度サブシステムサーバー名接続スレッドIDまたはユーザーIDまたはトランザクションIDメッセージIDメッセージとスタック・トレース(ある場合)で構成されます。各属性は山カッコで囲まれます。

次に示すのは、サーバー・ログ・ファイルのメッセージ例です(読みやすくするために分割してありますが、実際にはメッセージは1行にある可能性があります)。

####<May 25, 2015 10:23:32 AM EST> <Notice> <Deployment> <> <myServer> 
<RMI TCP Connection(4)-141.144.123.236> <> <> <> <1235575412801> <BEA-2045000> 
<The application bundle "Hello" was deployed successfully to file 
[C:\Oracle\Middleware\my_oep\user_projects\domains\oep_domain\defaultserver\applications\Hello\Hello.jar] 
with version 1235575412708>
14.2.4.2 コンソールへの出力、標準出力および標準エラーの形式

システムはメッセージをコンソール、標準出力または標準エラーに書き込みます。メッセージは、ロケール形式のタイムスタンプ重大度サブシステムメッセージIDおよびメッセージで構成されます。

次に示すのは、前のセクションからのメッセージが標準出力に出力される仕組みの例です(読みやすくするために分割してありますが、実際にはメッセージは1行にある可能性があります)。

<May 25, 2015 10:23:32 AM EST> <Notice> <Deployment> <BEA-2045000> 
<The application bundle "Hello" was deployed successfully to file 
[C:\Oracle\Middleware\my_oep\user_projects\domains\oep_domain\defaultserver\applications\Hello\Hello.jar] 
with version 1235575412708>

14.3 OSGiフレームワーク・ロガー

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

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

14.4 Log4jロガー

Log4jは、アプリケーション内にログ文を入れるために開発されたオープン・ソースのツールです。Log4jには、ロガー、アペンダおよびレイアウトの3つのメイン・コンポーネントがあり、それらはすべてこの項で説明します。

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

14.4.1 ロガー

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

14.4.2 アペンダ

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

14.4.3 レイアウト

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

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

Oracle Stream Analytics Visualizerを使用して、またはOracle Stream Analyticsサーバーのconfig.xmlファイルを編集して、Oracle Stream Analyticsのロギング・サービス属性を構成します。

config.xmlファイルは/Oracle/Middleware/my_oep/user_projects/domains/DOMAIN_DIR/servername/configディレクトリにあり、ここでDOMAIN_DIRはドメイン・ディレクトリ(my_domainなど)、servernameはサーバー・インスタンス・ディレクトリ(myServer1など)です。

次の例は、ロギング要素を含む一般的なOracle Stream Analyticsサーバーconfig.xmlファイルを示しています。

<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2007 sp2 (http://www.altova.com)-->
<n1:config 
    xsi:schemaLocation="http://www.bea.com/ns/wlevs/config/server wlevs_server_config.xsd" 
    xmlns:n1="http://www.bea.com/ns/wlevs/config/server" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
...
        <name>myLogService</name>
        <log-file-config>myFileConfig</log-file-config>
        <stdout-config>myStdoutConfig</stdout-config>
        <logger-severity>Notice</logger-severity>
        <logger-severity-properties>
            <entry>
                <key>LifeCycle</key>
                <value>Notice</value>
            </entry>
            <entry>
                <key>Management</key>
                <value>Notice</value>
            </entry>
            <entry>
                <key>CQLProcessor</key>
                <value>Notice</value>
            </entry>
            <entry>
                <key>CqlProcessor</key>
                <value>Notice</value>
            </entry>
            <entry>
                <key>Stream</key>
                <value>Notice</value>
            </entry>
            <entry>
                <key>Ede</key>
                <value>Notice</value>
            </entry>
            <entry>
                <key>Cache</key>
                <value>Notice</value>
            </entry>
            <entry>
                <key>Adapters</key>
                <value>Notice</value>
            </entry>
            <entry>
                <key>Spring</key>
                <value>Notice</value>
            </entry>
            <entry>
                <key>Channel</key>
                <value>Notice</value>
            </entry>
            <entry>
                <key>Recplay</key>
                <value>Notice</value>
            </entry>
            <entry>
                <key>Monitor</key>
                <value>Notice</value>
            </entry>
            <entry>
                <key>Server</key>
                <value>Notice</value>
            </entry>
            <entry>
                <key>EventTrace</key>
                <value>Notice</value>
            </entry>
            <entry>
                <key>Deployment</key>
                <value>Notice</value>
            </entry>
                </logger-severity-properties>
    </logging-service>
    <log-file>
        <name>myFileConfig</name>
        <rotation-type>none</rotation-type>
    </log-file>
    <log-stdout>
        <name>myStdoutConfig</name>
        <stdout-severity>Debug</stdout-severity>
    </log-stdout>

</n1:config>

次の項では、Oracle Stream Analyticsロギングの構成について説明します。

14.5.1 logging-service

この項では、logging-service要素について説明します。

表14-2 logging-serviceの構成パラメータ

パラメータ タイプ 説明
name
String

この構成オブジェクトの名前。

log-file-config
String

ログ・ファイルとそのローテーション・ポリシーの構成。

「log-file」を参照してください。

stdout-config 
String

stdout出力の構成に使用されるstdout構成オブジェクトの名前。「log-stdout」を参照してください。

logger-severity
String

ハンドラに伝播されるメッセージのしきい値の重要度を定義します。

デフォルト値は、Infoです。

DebugおよびTraceメッセージを参照するには、logger-severityDebugまたはTraceに構成します。

有効な値は次のとおりです:EmergencyAlertCriticalErrorWarningNoticeInfoDebugおよびTrace

logger-severity-properties

1つ以上の<entry>子要素。

<entry>要素で囲まれた名前と値の組合せのリストです。個別モジュール(パッケージ名、アプリケーション名、クラス名またはCQLProcessorなどのコンポーネント)とモジュールのロギングの重大度を表します。これらの重大度はOracle Stream Analyticsサーバーのデフォルトの重大度をオーバーライドします。

「個別モジュールの重大度の構成」を参照してください。

14.5.2 log-file

この項では、log-file要素について説明します。

表14-3 log-fileの構成パラメータ

パラメータ タイプ 説明
name
String

この構成オブジェクトの名前。

base-log-file-name
String

ログ・ファイル名。デフォルト値はserver.logです。

log-file-severity
String

ログ・ファイルに書き込む最も重大度の低いメッセージを指定します。デフォルト値はTraceです。

有効な値は次のとおりです。

  • Emergency

  • Alert

  • Critical

  • Error

  • Warning

  • Notice

  • Info

  • Debug

  • トレース

log-file-rotation-dir
String

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

設定しない場合、古いファイルはベース・ログ・ファイルとして同一ディレクトリ内に保存されます。

rotation-type
String

ローテーションをサイズに基づいて実行するか、時間に基づいて実行するか、または実行しないかを指定します。

有効な値は次のとおりです。

  • bySize

  • byTime

  • none

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です。

rotate-log-on-startup-enabled
Boolean

trueの場合、ログ・ファイルは起動時にローテーションされます。デフォルト値はtrueです。

number-of-files-limited
Boolean

trueの場合、ローテーションされた古いファイルが削除されます。デフォルトはfalseです。

14.5.3 log-stdout

この項では、log-stdout要素について説明します。

表14-4 log-stdoutの構成パラメータ

パラメータ タイプ 説明
name
String

この構成オブジェクトの名前。

stdout-severity
String

stdoutに送信されるメッセージのしきい値の重大度。デフォルト値はNoticeです。

有効な値は次のとおりです。

  • Emergency

  • Alert

  • Critical

  • Error

  • Warning

  • Notice

  • Info

  • Debug

  • トレース

stack-trace-depth 
Integer

stdoutに表示するスタック・トレース・フレームの数。

デフォルト値-1は、すべてのフレームが表示されることを意味します。

stack-trace-enabled 
Boolean

trueの場合、ログに記録されたメッセージにスタック・トレースが含まれているときは、スタック・トレースがコンソールにダンプされます。デフォルト値はtrueです。

14.5.4 個別モジュールの重大度の構成

Oracle Stream Analyticsの個別モジュールはロギングの重大度を指定できます。この重大度はOracle Stream Analyticsサーバーのデフォルトのロギング重大度をオーバーライドします。

これは、Oracle Stream Analyticsサーバーconfig.xmlファイルのlogger-severity-properties要素にentry子要素を指定して実行します。任意の数のモジュールに対して複数のentry子要素を指定できます。

個別モジュールの重大度の構成

  1. Oracle Stream Analyticsサーバーconfig.xmlファイルを編集します。
  2. 次の例に示すとおり、entry子要素をlogger-severity-properties要素に追加します。
      <logging-service>
        <name>myLogService</name>
        <logger-severity>Warning</logger-severity>
        <logger-severity-properties>
        ...
            <entry>
                <key>CQLProcessor</key>
                <value>Debug</value>
            </entry>
        ...
        </logger-severity-properties>
        ...
      </logging-service>
    
  3. key要素を次のいずれかに設定します。
    • コンポーネント名: 表14-5に示すコンポーネント名定数。

      表14-5 ロギング・コンポーネント名定数

      コンポーネント名定数 説明

      Adapters

      Oracle Stream Analyticsサーバーで実行中のアダプタ・インスタンスからのログ・メッセージに適用されます。

      Cache

      Oracle Stream Analyticsサーバーで実行中のキャッシュ・システムおよびキャッシュ・インスタンスからのログ・メッセージに適用されます。

      Cartridges

      Oracle Stream Analyticsカートリッジ・インフラストラクチャに関連するログ・メッセージに適用されます。

      Channel

      Oracle Stream Analyticsサーバーで実行中のチャネルからのログ・メッセージに適用されます。

      CQLProcessor

      Oracle Stream Analyticsサーバーで実行中のOracle CQLプロセッサからのログ・メッセージに適用されます。

      CQLServer

      各CQLProcessorの中核にあるCQLEngineからのログ・メッセージに適用されます。

      CQLServerTrace

      各CQLProcessorの中核にあるCQLEngineからのログ・メッセージに適用されます。

      Coherence

      クラスタリングに関連するメッセージを含む、Oracle Coherenceからのログ・メッセージに適用されます。

      ここに入力する値は、次の方法でOracle Coherenceの重大度レベルにマップされます。

      • エラー: 1
      • 警告: 2
      • 通知: 3
      • 情報: 4
      • デバッグ: 5
      • トレース: 9

      構成内のlogging-config設定をオーバーライドして、Oracle Coherenceからのロギングをカスタマイズできます。たとえば、Oracle Coherence (log4j)に使用されるデフォルト・ログの宛先をオーバーライドして、別の宛先を使用できます。構成のオーバーライドの詳細は、「Oracle Coherenceクラスタの構成」を参照してください。

      デプロイメント

      デプロイメント・インフラストラクチャに関連するログ・メッセージに適用されます。

      Ede

      Oracle Stream Analyticsサーバー・イベント・ディスパッチ・インフラストラクチャのイベント駆動環境からのログ・メッセージに適用されます。

      EventTrace

      InfoまたはDebugに設定すると、すべてのアプリケーションのEPN内で動向中のイベントをトレースできます。このログ・キーの重大度は、Oracle Stream Analytics Visualizerを使用して動的に変更できます。

      Info重大度では、次のようなログ・メッセージが表示されます。

      <May 26, 2009 5:53:49 PM PDT> <Info> <EventTrace> 
          <BEA-000000> <Application [helloworld], 
          Stage [helloworldOutputChannel] received insert event>

      Debug重大度では、ログ・メッセージには次のイベントの詳細が含まれています。

      <May 26, 2009 6:02:34 PM PDT> <Debug> <EventTrace> 
          <BEA-000000> <Application [helloworld], 
          Stage [helloworldOutputChannel] received insert 
          event [HelloWorldEvent: HelloWorld - the current 
          time is: 6:02:34 PM]>

      FaultHandler

      Oracle CQLでのフォルト処理に関連するログ・メッセージに適用されます。

      HadoopCartridge

      Hadoopカートリッジに関連するログ・メッセージに適用されます。

      JavaCartridge

      Oracle CQLでのJavaの使用に関連するログ・メッセージに適用されます。

      Lifecycle

      Oracle Stream Analyticsサーバーとアプリケーション・ライフサイクル操作からのログ・メッセージに適用されます。

      Management

      Oracle Stream Analyticsサーバーの一般的なJMX関連管理のAPI操作からのログ・メッセージに適用されます。

      Monitor

      Oracle Stream Analyticsサーバーの監視サービスからのログ・メッセージに適用されます。

      NoSQLCartridge

      Oracle NoSQLカートリッジに関連するログ・メッセージに適用されます。

      Recplay

      Oracle Stream Analyticsサーバーのイベント記録および再生操作からのログ・メッセージに適用されます。

      サーバー

      サーバー・インフラストラクチャ・コンポーネントに関連するログ・メッセージに適用されます。

      SpatialCartridge

      空間カートリッジに関連するログ・メッセージに適用されます。

      Spring

      Springコンテナ操作からのログ・メッセージに適用されます。

      Stream

      Oracle Stream Analyticsサーバーで実行中のストリーム・インスタンスからのログ・メッセージに適用されます。

      例:

      <entry>
          <key>CQLProcessor</key>
          <value>Debug</value>
      </entry>
      
    • アプリケーション名: 任意のOracle Stream Analyticsサーバー・アプリケーションまたはユーザー定義アプリケーションのモジュール名。例:

      <entry>
          <key>sample.HelloWorld</key>
          <value>Debug</value>
      </entry>
      
  4. value要素に重大度レベルを設定します。

    「ログの重大度レベルの使用」を参照してください。

    例:

    <entry>
        <key>CQLProcessor</key>
        <value>Debug</value>
    </entry>
    

    この重大度レベルはkey要素に指定したモジュールに適用され、logger-severity要素に設定されたデフォルトのOracle Stream Analyticsサーバー・ロギング重大度レベルをオーバーライドします。

  5. その他のモジュールに対して、ステップ2からのステップを繰り返します。
  6. config.xmlファイルを保存して閉じます。

14.6 Log4jロギングの構成

Oracle Stream Analyticsはオープン・ソースlog4jロギング・システムをサポートします。

この項では、次の作業について説明します。

14.6.1 Log4jプロパティの構成

デフォルトの構成ファイルはlog4j.propertiesです。この指定は、log4j.configurationシステム・プロパティを使用してオーバーライドできます。

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

14.6.2 アプリケーション・マニフェストの構成

次の必要なLog4jパッケージをインポートするためにアプリケーションのMANIFEST.MFファイルを更新します。

Import-Package:
    org.apache.log4j;version="1.2.13",
    org.apache.log4j.config;version="1.2.13",
    ...

14.6.3 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

-Dlog4j.debug=trueは、非常に重要なもう1つのコマンド・ライン・プロパティです。このプロパティは、log4j出力に失敗した場合または暗号エラー・メッセージが返された場合に使用します。

14.6.4 Log4jロギングのデバッグ

log4j出力に失敗した場合または暗号エラー・メッセージが返された場合に、-Dlog4j.debug=trueのコマンド・ライン・プロパティをコマンド・ラインで使用します。

詳細は、「Log4jロギングの有効化」を参照してください。

14.7 Apache CommonsロギングAPIの使用

Oracle Stream Analyticsserver.logおよびconsoleoutput.logファイルにアプリケーション固有のメッセージを記録するために、Oracle Stream Analyticsアプリケーション内のApache CommonsロギングAPIを使用できます。

commonsロギングAPIを使用するには:

  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オブジェクトを使用して、ロギング・サービスにログ・リクエストを発行します。

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

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

  4. weblogic.logging.commons.LogImplログ・メソッドは、メッセージをサーバー・ログに送ります。
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");
  }
}

14.8 デバッグ・オプションの構成

デバッグ・オプションを有効または無効にして、Oracle Stream Analyticsアプリケーションの問題を診断できます。

表14-6は、Oracle Stream Analyticsが提供するデバッグ・オプションを示しています。

表14-6 デバッグ・フラグ

デバッグ・フラグ 説明
com.bea.core.debug.DebugBootBundle

ブート・デバッグ

com.bea.core.debug.DebugBootBundle.stdout

ブート・デバッグのデバッグ文字列がstdoutに送られます

com.bea.core.debug.DebugCM

構成マネージャ

com.bea.core.debug.DebugCM.stdout

構成マネージャのデバッグ文字列がstdoutに送られます

com.bea.core.debug.DebugConfigurationRuntime

ランタイムMBeanからのランタイム情報

com.bea.core.debug.DebugCSS

CSS

com.bea.core.debug.DebugCSS.stdout

CSSのデバッグ文字列がstdoutに送られます

com.bea.core.debug.DebugCSSServices

CSSサービス

com.bea.core.debug.DebugCSSServices.stdout 

CSSサービスのデバッグ文字列がstdoutに送られます

com.bea.core.debug.DebugJDBCConn

JDBC接続

com.bea.core.debug.DebugJDBCInternal

JDBC内部

com.bea.core.debug.DebugJDBCRMI

JDBC RMI

com.bea.core.debug.DebugJDBCSQL

JDBC SQL

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.DebugJTAJDBC 

JTA JDBC

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.DebugNetIO

NetIO

com.bea.core.debug.DebugOX

OSGiからJMX (OX)へ

com.bea.core.debug.DebugOX.stdout

OSGiからJMX (OX)へ - デバッグが標準出力に送られます。

com.bea.core.debug.DebugSCP

簡易構成プロバイダ

com.bea.core.debug.DebugSCP.stdout

Simple Configuration Providerのデバッグ文字列がstdoutに送られます

com.bea.core.debug.DebugSDS

単純な宣言サービス

com.bea.core.debug.DebugSDS.stdout

SDSデバッグ文字列がstdoutに送られます

com.bea.core.debug.DebugServiceHelper

サービス・ヘルパー

com.bea.core.debug.DebugServiceHelper.stdout

サービス・ヘルパーのデバッグ文字列がstdoutに送られます

com.bea.core.debug.DebugStoreAdmin 

ストア管理

com.bea.core.debug.DebugStoreIOLogical

ストアIOLogical

com.bea.core.debug.DebugStoreIOLogicalBoot 

ストアIOLogicalBoot

com.bea.core.debug.DebugStoreIOPhysical

ストアIOPhysical

com.bea.core.debug.DebugStoreIOPhysicalVerbose

ストアIOPhysicalVerbose

com.bea.core.debug.DebugStoreXA 

ストアXA

com.bea.core.debug.DebugStoreXAVerbose 

ストアXAVerbose

com.bea.core.debug.servicehelper.dumpstack

サービス・ヘルパーがタイムアウトしたときにスタック・トレースをダンプします。

次の項では、これらのOracle Stream Analyticsデバッグ・オプションの使用方法を説明します。

Log4jロギングを使用している場合は、「Log4jロギングのデバッグ」も参照してください。

14.8.1 構成ファイルを使用したデバッグ・オプションの構成

この項では、構成ファイルを使用してデバッグ・オプションを構成する手順を説明します。

構成ファイルからデバッグを構成するには、次の手順を実行します。

この手順では、Oracle Stream Analyticsサーバーconfig.xmlファイルのSimple Declarative Services (SDS)デバッグ(表14-6からのcom.bea.core.debug.DebugSDS)をオンにします。

構成ファイルを使用したデバッグ・オプションの構成

  1. 表14-6DebugSDSフラグを検索します。
    com.bea.core.debug.DebugSDS
    
  2. フラグ名からcom.bea.core.debug.パッケージ名を省略してXMLタグを作成します。
    <DebugSDS></DebugSDS>
    
  3. 手順5に示すとおり、Oracle Stream Analyticsサーバーのconfig.xmlファイルを編集して、debug要素とともにdebug-properties子要素を追加します。
  4. 手順5に示すとおり、DebugSDS要素をdebug-properties要素に追加します。
  5. 次の例に示すとおり、DebugSDS要素をtrueに設定して、このデバッグ・フラグを有効にします。
    <config>
       <debug>
          <debug-properties>
             <DebugSDS>true</DebugSDS>
          </debug-properties>
       </debug>
    </config>
    
  6. 手順6に示すとおり、logging-service要素のlogger-severityDebugに設定します。
  7. 次の例に示すとおり、log-stdout要素のstdout-severityDebugに設定します。
    <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>