8.28.2 取得できるトレース情報
(1) ユーザ拡張性能解析トレースのトレース情報
ユーザ拡張性能解析トレースのトレース情報を次の表に示します。
表8-191 ユーザ拡張性能解析トレースのトレース情報
図中の番号※1 | 取得できる情報 |
---|
イベントID (Event) | リターンコード(Rc) | インタフェース名(INT) | オペレーション情報(OPR) | 付加情報※2 (OPT/ASCII※3) |
---|
1 | ユーザ拡張性能解析トレース設定ファイルで指定したイベントID。 指定しない場合は,0xae00。 | 0 | ユーザ拡張性能解析トレース設定ファイルでユーザが指定した識別ID。 | - | 次の情報が出力されます。
|
2 | ユーザ拡張性能解析トレース設定ファイルで指定したイベントIDに+ 1した値。 指定しない場合は,0xae01。 | 0 | ユーザ拡張性能解析トレース設定ファイルでユーザが指定した識別ID。 | メソッドの最後に実行した文の行番号※4。 | 次の情報が出力されます。
|
3 | ユーザ拡張性能解析トレース設定ファイルで指定したイベントIDに+1した値。 指定しない場合は,0xae01。 | 1 | ユーザ拡張性能解析トレース設定ファイルでユーザが指定した識別ID。 | 例外またはエラーのクラス名※5。 | 次の情報が出力されます。
|
(凡例)-:出力なし。
注※1 図8-119中の番号と対応しています。
注※2 ユーザ拡張性能解析トレースは,jvm.userprf.LogLevelプロパティに指定した出力レベルでメソッド名を出力します。出力レベルと各レベルで出力される情報については,「(2) 出力レベル」を参照してください。
注※3 ASCII領域に出力され付加情報が,ASCII文字で256文字を超えていた場合,前から256文字が出力されます。
注※4 jvm.userprf.LineNumberプロパティにtrueを指定した場合に出力されます。jvm.userprf.LineNumberプロパティについては,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「16.3 JavaVMで使用するプロパティ」を参照してください。
注※5 jvm.userprf.ThrowableNameプロパティにtrueを指定した場合,jvm.userprf.LogLevelプロパティに指定した出力レベル,およびjvm.userprf.ThrowableNameEditMethodプロパティに指定した編集方法でクラス名が出力されます。jvm.userprf.ThrowableNameプロパティおよびjvm.userprf.ThrowableNameEditMethodプロパティについては,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「16.3 JavaVMで使用するプロパティ」を参照してください。
(2) 出力レベル
jvm.userprf.LogLevelプロパティで,ユーザ拡張性能解析トレースのトレース情報の出力レベルを指定します。
出力レベルと出力されるトレース情報を次の表に示します。
表8-192 出力レベルの指定とトレース出力情報
jvm.userprf.LogLevelプロパティの指定 | 付加情報(OPT/ASCII) | メソッドの異常出口のオペレーション情報(OPR) |
---|
class | クラス名 | 例外またはエラーのクラス名 |
package | 完全修飾クラス名 | 例外またはエラーの完全修飾クラス名 |
method | 完全修飾クラス名+メソッド名 |
signature | 完全修飾クラス名+メソッド名+メソッドの引数の型 |
jvm.userprf.LogLevelプロパティについては,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「16.3 JavaVMで使用するプロパティ」を参照してください。
(3) ユーザ拡張性能解析トレースの出力例
ユーザ拡張性能解析トレースの出力例を次に示します。
●トレース情報の出力内容を変更しない場合の例
トレース情報の出力内容を変更しない場合の設定例を次に示します。
- 簡易構築定義ファイルの設定例
:
<param>
<param-name>UserPrfText</param-name>
<param-value>
<![CDATA[
com.sample.ClassA.method1(int),test00,false
]]>
</param-value>
</param>
<param>
<param-name>add.jvm.arg</param-name>
<param-value>-Djvm.userprf.Enable=true</param-value>
</param>
: |
- 出力内容
Event | Rc | INT | OPR | ASCII |
---|
0xae00 | 0 | test00 | (空白) | ClassA |
0xae01 | 0 | test00 | (空白) | ClassA |
- この例では,次のようにトレース情報が出力されます。
- トレース対象メソッドに対してイベントIDの設定を省略しているため,トレース対象となったメソッドが呼び出されると,イベントIDとしてメソッドの入口で0xae00,メソッドの出口で0xae01のデフォルト値が出力されます。
●オペレーション情報に行番号を出力する場合の例
ユーザ拡張性能解析トレース設定ファイル(/test/setting.txt)を使用して,オペレーション情報に行番号を出力する場合の設定例を次に示します。
- 簡易構築定義ファイルの設定例
:
<param>
<param-name>add.jvm.arg</param-name>
<param-value>-Djvm.userprf.Enable=true</param-value>
<param-value>-Djvm.userprf.File=/test/setting.txt</param-value>
<param-value>-Djvm.userprf.LineNumber=true</param-value>
</param>
: |
- ユーザ拡張性能解析トレース設定ファイル(setting.txt)の設定例
com.sample.ClassA.method1(java.lang.String),test00,false,0xae77
com.sample.ClassB.method2(boolean),test01.false |
- 出力内容
- この例ではjvm.userprf.LineNumber=trueを指定しているため,メソッド正常出口でオペレーション情報(OPR領域)に,各メソッドの最後に実行された行番号が出力されます。
Event | Rc | INT | OPR | ASCII |
---|
0xae77 | 0 | test00 | (空白) | ClassA |
0xae78 | 0 | test00 | 324 | ClassA |
0xae00 | 0 | test01 | (空白) | ClassB |
0xae01 | 0 | test01 | 15 | ClassB |
- この例では,次のようにトレース情報が出力されます。
- ユーザ拡張性能解析トレース設定ファイルの2行目の設定では,トレース対象メソッドに対してイベントIDの設定を省略しているため,トレース対象となったメソッドが呼び出されると,イベントIDとしてメソッドの入口で0xae00,メソッドの出口で0xae01のデフォルト値が出力されます。
●発生した例外またはエラーのクラス名を出力する場合の例
例外のクラス名をメソッド異常出口のオペレーション情報(OPR領域)に出力する場合の設定例を次に示します。なお,この例ではClassAのサブクラスにClassCが存在し,ClassCでClassA.method1をオーバーライドしている場合について説明します。
- 簡易構築定義ファイルの設定例
:
<param>
<param-name>UserPrfText</param-name>
<param-value>
<![CDATA[
com.sample.ClassA.method1(),test00,true,0xae0a
]]>
</param-value>
</param>
<param>
<param-name>add.jvm.arg</param-name>
<param-value>-Djvm.userprf.Enable=true</param-value>
<param-value>-Djvm.userprf.LineNumber=true</param-value>
<param-value>-Djvm.userprf.ThrowableName=true</param-value>
</param>
: |
- 出力内容
Event | Rc | INT | OPR | ASCII |
---|
0xae0a | 0 | test00 | (空白) | ClassA |
0xae0b | 0 | test00 | 324 | ClassA |
0xae0a | 0 | test00 | (空白) | ClassC |
0xae0b | 1 | test00 | IOException | ClassC |
- この例では,次のようにトレース情報が出力されます。
- サブクラスフラグにtrueを設定しているため,ClassA.method1をオーバーライドしているClassC.method1の情報も出力されます。
- jvm.userprf.LineNumber=trueを指定しているため,メソッド正常出口のオペレーション情報(OPR領域)に,各メソッドの最後に実行された行番号が出力されます。
- jvm.userprf.ThrowableName=trueを設定しているため,発生した例外のクラス名がメソッド異常出口のオペレーション情報(OPR領域)に出力されます。ただし,jvm.userprf.LogLevelプロパティを指定していないため,発生した例外のクラス名だけが出力されます。
●発生した例外またはエラーのクラス名の出力方式を変更した例
発生した例外またはエラーのクラス名の出力方式を変更した場合の設定例を次に示します。
- 簡易構築定義ファイルの設定例
:
<param>
<param-name>UserPrfText</param-name>
<param-value>
<![CDATA[
com.sample.ClassA.method1(),test00,false
]]>
</param-value>
</param>
<param>
<param-name>add.jvm.arg</param-name>
<param-value>-Djvm.userprf.Enable=true</param-value>
<param-value>-Djvm.userprf.ThrowableName=true</param-value>
<param-value>-Djvm.userprf.ThrowableNameEditMethod=FRONT_CUT</param-value>
<param-value>-Djvm.userprf.LogLevel=method</param-value>
</param>
: |
- 出力内容
Event | Rc | INT | OPR | ASCII |
---|
0xae00 | 0 | test00 | (空白) | com.sample.ClassA.method1 |
0xae01 | 1 | test00 | *ment.IllegalClassFormatException | com.sample.ClassA.method1 |
- この例では,次のようにトレース情報が出力されます。
- トレース対象メソッドに対してイベントIDの設定を省略しているため,トレース対象となったメソッドが呼び出されると,イベントIDとしてメソッドの入口で0xae00,メソッドの出口で0xae01のデフォルト値が出力されます。
- jvm.userprf.ThrowableName=trueを指定しているため,発生した例外またはエラーのクラス名がメソッドの異常出口のオペレーション情報(OPR領域)に出力されます。ただし,発生した例外名が33文字以上で,jvm.userprf.ThrowableNameEditMethod=FRONT_CUTを指定しているため,前方が省略されて出力されます。省略された部分は「*」で表示されます。
- jvm.userprf.LogLevel=methodを指定しているため,付加情報(ASCII領域)に完全修飾クラス名+メソッド名が出力されます。