Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 保守/移行編


8.25.2 取得できるトレース情報

ユーザ拡張性能解析トレースのトレース情報について説明します。

〈この項の構成〉

(1) ユーザ拡張性能解析トレースのトレース情報

ユーザ拡張性能解析トレースのトレース情報を次の表に示します。

表8‒147 ユーザ拡張性能解析トレースのトレース情報

図中の番号※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-104中の番号と対応しています。

注※2 ユーザ拡張性能解析トレースは,jvm.userprf.LogLevelプロパティに指定した出力レベルでメソッド名を出力します。出力レベルと各レベルで出力される情報については,「(2) 出力レベル」を参照してください。

注※3 ASCII領域に出力され付加情報が,ASCII文字で256文字を超えていた場合,前から256文字が出力されます。

注※4 jvm.userprf.LineNumberプロパティにtrueを指定した場合に出力されます。jvm.userprf.LineNumberプロパティについては,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「14.3 JavaVMで使用するプロパティ」を参照してください。

注※5 jvm.userprf.ThrowableNameプロパティにtrueを指定した場合,jvm.userprf.LogLevelプロパティに指定した出力レベル,およびjvm.userprf.ThrowableNameEditMethodプロパティに指定した編集方法でクラス名が出力されます。jvm.userprf.ThrowableNameプロパティおよびjvm.userprf.ThrowableNameEditMethodプロパティについては,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「14.3 JavaVMで使用するプロパティ」を参照してください。

(2) 出力レベル

jvm.userprf.LogLevelプロパティで,ユーザ拡張性能解析トレースのトレース情報の出力レベルを指定します。

出力レベルと出力されるトレース情報を次の表に示します。

表8‒148 出力レベルの指定とトレース出力情報

jvm.userprf.LogLevelプロパティの指定

付加情報(OPT/ASCII)

メソッドの異常出口のオペレーション情報(OPR)

class

クラス名

例外またはエラーのクラス名

package

完全修飾クラス名

例外またはエラーの完全修飾クラス名

method

完全修飾クラス名+メソッド名

signature

完全修飾クラス名+メソッド名+メソッドの引数の型

jvm.userprf.LogLevelプロパティについては,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「14.3 JavaVMで使用するプロパティ」を参照してください。

(3) ユーザ拡張性能解析トレースの出力例

ユーザ拡張性能解析トレースの出力例を次に示します。

(a) トレース情報の出力内容を変更しない場合の例

トレース情報の出力内容を変更しない場合の設定例を次に示します。

簡易構築定義ファイルの設定例
:
<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のデフォルト値が出力されます。

(b) オペレーション情報に行番号を出力する場合の例

ユーザ拡張性能解析トレース設定ファイル(/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のデフォルト値が出力されます。

(c) 発生した例外またはエラーのクラス名を出力する場合の例

例外のクラス名をメソッド異常出口のオペレーション情報(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プロパティを指定していないため,発生した例外のクラス名だけが出力されます。

(d) 発生した例外またはエラーのクラス名の出力方式を変更した例

発生した例外またはエラーのクラス名の出力方式を変更した場合の設定例を次に示します。

簡易構築定義ファイルの設定例
:
<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領域)に完全修飾クラス名+メソッド名が出力されます。