診断メッセージの制御

ビジネス・コンポーネントの診断を制御するには、様々なjbo.xxx システム・プロパティを設定します。デフォルトでは、システム・プロパティ定義は、CLASSPATH./oracle/jbo/commonパス内のDiagnostic.propertiesファイルにあります。

このファイルのデフォルト・バージョンは、OracleホームのBC4J/lib/bc4jmt.jarライブラリ内に提供されています。デフォルト設定を永続的に変更するには、このファイルを .jarアーカイブから解凍し、ファイル内のプロパティの値を変更し、プロジェクトのライブラリ・パス中のなるべく上位のディレクトリに置きます。このファイルは、適切な ./oracle/jbo/commonサブディレクトリ内のJBO Runtimeというライブラリより上位に置く必要があります。

Diagnostic.propertiesファイル内のプロパティの説明は、「診断メッセージのプロパティ」を参照してください。Diagnostic.propertiesファイルの例は、「診断プロパティ・ファイルのサンプル」を参照してください。

一時的な上書き

JDeveloperのプロジェクトの「プロパティ」ダイアログに適切な値を入力することにより、診断プロパティを一時的に上書きできます。

  1. JDeveloperのメニュー・バーで「プロジェクト」->「プロジェクトの設定」を選択し、プロジェクトの「プロパティ」ダイアログを開きます。「実行」タブを選択します。

  2. 「Javaオプション」フィールドで、コマンドライン・スイッチとして、変更するシステム・プロパティの新規の値を、JVMの-Dフラグに続けて入力します。

    たとえば、診断レポートを抑止するには、「Javaオプション」フィールドに
    -Djbo.debugoutput=silentという値を入力します。

  1. 「OK」をクリックし、ダイアログを閉じて変更を有効にします。

診断メッセージのプロパティ

次のセクションでは、Diagnostic.propertiesファイルで設定できるプロパティについて説明します。Diagnostic.propertiesファイルの例は、「診断プロパティ・ファイルのサンプル」を参照してください。

メッセージ・ルーティングの決定

構文: jbo.debugoutput={silent|console|routing_classname}

このプロパティにより、診断メッセージのルーティング方法を指定します。ルーティングは、oracle.jbo.common.IDiagnosticインタフェースの実装により決定されます。jbo.debugoutputプロパティに指定した値により、使用するインタフェースの実装が決まります。

debugoutputプロパティでも、交換可能な診断実装がサポートされています。たとえば、出力のルーティングについて特定の指定をするには、oracle.jbo.common.IDiagnosticを実装するanyCorp.ACDiagnosticImplクラスを作成します。次に、consolesilentではなく、anyCorp.ACDiagnosticImplの完全修飾クラス名をdebugoutputに渡します。

コール側のファンクションの表示

構文:  jbo.logging.show.function={true|false}

このプロパティの値により、診断をコールするファンクションの名前を表示するかどうかを指定します。ファンクション名を表示した場合、パフォーマンスが低下しますので注意してください。デフォルト値はfalseです。

コール側のファンクションを診断メッセージに表示する方法の例は、「診断メッセージのサンプル」を参照してください。

行番号の表示

構文:  jbo.logging.show.linecount={true|false}

このプロパティの値により、診断メッセージの行に番号を付けるかどうかを指定します。デフォルト値はtrueです。

診断メッセージに行番号を表示する方法の例は、「診断メッセージのサンプル」を参照してください。

ログしきい値の設定

構文:  jbo.logging.trace.threshold={[0-9]}

トレース・メッセージには、1つの整数のしきい値番号が関連付けられます。範囲は0から9までです。現在システム内に存在しているメッセージはすべてレベル3です。デバッグ・ビルドがある場合、レベル6のその他のメッセージも存在します。デフォルト値は3です。

トレースしきい値プロパティの値により、表示するトレース・メッセージを指定します。メッセージのレベルがパラメータに指定した値以下の場合、メッセージが表示されます。メッセージのレベルがパラメータよりも大きい場合、メッセージは表示されません。たとえば、しきい値が3に設定されている場合、0、1、2および3のレベルのメッセージが表示されます。4、5またはそれ以上のレベルのメッセージは表示されません。

診断メッセージの接頭辞の設定

構文: jbo.debug.prefix={prefix}

このプロパティにより、デバッグ診断で出力されるレベル6のメッセージに付加する接頭辞を指定します。デバッグ診断を使用できるのは、ビジネス・コンポーネント製品のデバッグ・ビルドを使用する場合のみであることに注意してください。デフォルト値はDBGです。

デバッグ・コールの間隔の表示

構文:  jbo.logging.show.timing={true|false}

このプロパティの値により、デバッグ・コールの間隔を表示するかどうかを指定します。時間の単位はミリ秒です。デフォルト値はfalseです。

診断メッセージに間隔を表示する方法の例は、「診断メッセージのサンプル」を参照してください。

メッセージのトレース・レベルの表示

構文:  jbo.logging.show.level={true|false}

このプロパティの値により、メッセージと関連付けられたトレース・レベルを表示するかどうかを指定します。解放モードでは、すべてのデバッグ・メッセージはレベル3になるため、このプロパティは通常は使用されません。デフォルト値はfalseです。

診断メッセージにトレース・レベルを表示する方法の例は、「診断メッセージのサンプル」を参照してください。

Oracleデータベースで実行中の診断メッセージの表示

ビジネス・コンポーネントがOracleデータベース内部で実行されている場合、その出力は、データベース・インスタンスに関連付けられたログ・ファイルに保存されます。このログ・ファイルは次の場所にあります。

<ORACLE_HOME>ADMIN\<DB_SID\udump\<DB_SID>S000.TRC

Oracleデータベース内部での実行中に、更新したDiagnostic.propertiesファイルをデータベースにアップロードするには、loadjavaユーティリティを使用します。

  1. Diagnostic.propertiesファイルで診断オプションをconsoleに設定します。

jbo.debugoutput=console
  1. 次のように、loadjavaユーティリティを使用し、ファイルをアップロードします。

loadjava -v -r -user jbo/jbo@testserver:1521:ORCL -thin oracle\jbo\common\Diagnostic.properties

診断メッセージのサンプル

次のサンプルは、メッセージ・ルーティングがコンソール・モード(すなわち、jbo.debugoutput=console)に設定されている場合に発行された診断メッセージです。

<3>[11] (10) RowSetHelper.getListeners Getting listeners ready...

このサンプル・メッセージの意味は、次のとおりです。

診断プロパティ・ファイルのサンプル

サンプルのDiagnostic.propertiesファイルは次のとおりです。

# ------------------------------------------------------------------------
# File: oracle.jbo.common.logging.Diagnostic.properties
# Cont: Diagnostic.properties file for DEBUG build of Business Components for Java
# Desc: This is the file used to determine the way that Diagnostic
# calls in the code are handled: all the properties below can be
# overridden by specifying then as -D switches to the java VM
# ------------------------------------------------------------------------
# Which implementation of IDiagnostic to use: console|silent|classname
# classname is the fully qualified name of a user-defined class that
# implements the IDiagnostic interface
jbo.debugoutput=console
# --------------------------------------------------
# Sample DebugOutput Line
# --------------------------------------------------
# <3>[11] (10) RowSetHelper.getListeners Getting listeners ready...
# In the above example:
# <3> - the message is issues at trace level 3
# [11] - this is trace line number 11
# (10) - 10 ms have elapsed since the last trace message
# RowSetHelper - class from which the trace message was issued
# getListeners - function from which the trace message was issued
# Getting Listeners ready ... - test of the trace message
# --------------------------------------------------
# Show calling function: false|true
jbo.logging.show.function=false
# Show a linecount as each diagnostic line is output (true|false)
jbo.logging.show.linecount=true
# Logging cutoff threshold: any trace messages with a level
# higher than this threshold will be suppressed.
# For a release build, system Diagnostic messages are at level 3
# Additionally, in a Debug build, DebugDiagnostic messages are at level 6
jbo.logging.trace.threshold=3
# Prefix string to display on DebugDiagnostic lines
# Debug build only
jbo.debug.prefix=DBG
# Show elapsed time info every call (true|false)
jbo.logging.show.timing=false
# Show level of trace statement
jbo.logging.show.level=false
# ------------------------------------------------------------------------
# end of file
# ------------------------------------------------------------------------