J2EEアプリケーションのユーザデバッグ情報は、J2EEアプリケーションからログ出力メソッドを呼び出す時に出力されます。
ログ出力メソッドごとに出力されるユーザデバッグ情報の詳細は、“3.13.7 サポート対象ログ出力メソッド”を参照してください。
ここでは、ユーザデバッグ情報をコンテナログへ出力するための方法、出力形式および出力内容を説明します。
ユーザデバッグ情報の出力方法
J2EEアプリケーションのユーザデバッグ情報をコンテナログへ出力するためには、ログ出力メソッドをJ2EEアプリケーションクラス内に記述します。記述手順は以下のとおりです。
import文を記述します。
デバッグ情報を出力するためのクラスを獲得します。
2.で獲得したクラスを使用して各種ログ出力メソッドの呼出しを行い、J2EEアプリケーション任意のデバッグ情報を出力します。
例
以下に例を示します。
package sample.ejb.entity.bmp; import java.rmi.*; import javax.ejb.*; import java.sql.*; import javax.sql.*; import javax.naming.*; import java.util.logging.*; //ロギングクラスの追加 (1) public class EntityBMPUseLogger implements javax.ejb.EntityBean { // デバッグ情報を出力するためのクラス(Logger)を獲得 private static Logger logger = Logger.getLogger("UseLoggerCMP"); // (2) private boolean isDebug = false; ・・・省略・・・ public void setEntityContext(javax.ejb.EntityContext ctx) throws javax.ejb.EJBException, java.rmi.RemoteException { ・・・省略・・・ public EntityBMPUseLoggerPrimaryKey ejbCreate(int No, String Name, int Stock) throws javax.ejb.DuplicateKeyException, javax.ejbCreateException, javax.ejb.RemoteException { if(isDebug) { // Debug Mode ? // スナップにログを出力する logger.log(Level.FINE,"ejbCreate START"); // (3) } ・・・省略・・・
ユーザデバッグ情報以外のログ出力を抑止する方法
J2EEアプリケーションのユーザデバッグ情報を出力する場合(IJServerのJava VMオプションに-DFJSNAP=10もしくは11もしくは12を設定した場合)、コンテナログにIJServerプロセスで動作するモジュールや他社製品のモジュール(JDBCドライバ)でJDKが提供するjava.util.loggingパッケージを使用してロギングしていた情報も出力されます。
J2EEアプリケーションのユーザデバッグ情報以外のログを出力させたくない場合は、以下を定義してください。
定義ファイル格納ディレクトリ |
|
定義ファイル名 | FJlogging.properties |
変更する定義 (注1) | .level=OFF |
追加する定義 (注2) | “Logger名”=ALL |
.levelの初期設定値はALLとなっています。OFFに変更してください。
J2EEアプリケーションがLogger作成時に使用しているLogger名を指定してください。
J2EEアプリケーションが利用しているオープンソースのフレームワーク、ユーティリティモジュール(例Commons-logging)、またはIJServerプロセスで動作する他社製品(JDBCドライバ等)が、java.util.loggingパッケージを使用して出力しているログの情報を取得したい場合は、公開されているドキュメントを参照してLogger名を確認してから定義を追加してください。
出力形式
J2EEアプリケーションから出力されたユーザデバッグ情報に日付、時間などの情報を加えて出力されます。
各種ログ出力メソッドを使用して出力される形式は、以下の形式です。
使用するAPIによって出力形式は異なります。詳細は、“3.13.7 サポート対象ログ出力メソッド”を参照してください。
それぞれの出力形式を説明します。
メッセージ(指定文字列)だけを出力
日付 時間 : Log Message ログレベル メッセージ
メッセージ(指定文字列) + パラメタ(任意のObject)
日付 時間 : Log Message ログレベル メッセージ Log Param :パラメタ情報
メッセージ(指定文字列) + 例外(任意の例外)
日付 時間 : Log Exception ログレベル メッセージ 例外情報
出力内容
以下に、出力項目と出力内容を説明します。
出力項目 | 出力内容 |
---|---|
日付 | デバッグ情報出力時の日付を“日/月/年”の形式で示します。 |
時間 | デバッグ情報出力時の時間を“時:分:秒.ミリ秒”の形式で出力します。 |
Log Message | デバッグ情報であることを示します。 |
Log Exception | デバッグ情報(例外情報)であることを示します。 |
ログレベル | デバッグ情報のレベル(ログ出力メソッドへ指定したレベル)を下記文字列で出力します。 |
メッセージ | J2EEアプリケーションが指定したデバッグ情報(任意の文字列)を出力します。 |
パラメタ情報 | J2EEアプリケーションが指定したパラメタ情報(任意のObject)の型、値を以下のいずれかの形式で出力します。
配列クラス、java.utilパッケージのHashtableなどは格納されているすべての値を出力します。 |
例外情報 | J2EEアプリケーションが指定した例外情報(任意の例外)を出力します。 |
フィールド情報 | オブジェクトのpublicなフィールド情報を以下の形式で示します。
プリミティブ型とString型の場合は型、変数名、値を出力します。 |
出力例
以下に、出力例を示します。
メッセージ(指定文字列)
メソッドが、logger.log(Level.INFO,"DBAccess start!!");の場合
23/10/2000 09:49:15.454 : Log Message: [INFO] DBAccess start!!
メッセージ(指定文字列) + パラメタ(任意のObject)
メソッドが、logger.log(Level.INFO," prepareStatement ",sql);の場合("sql"は、java.lang.String型とする)
23/10/2000 09:49:15.454 : Log Message: [INFO] prepareStatement Log Param : (java.lang.String)"SELECT * FROM EMP_EJB1 WHERE (ID=?)"
メッセージ(指定文字列) + 例外(任意の例外)
メソッドが、logger.log(Level.SEVERE"Error!!", ex)の場合("ex"は java.lang.Throwable型とする)
23/10/2000 09:49:15.454:LogException:[SEVERE] Error!! java.lang.NullPointerException
注意
J2EEアプリケーションのユーザデバッグ情報を取得するとき以外に、スナップを出力するための記述をプログラム上にしないでください。ログ出力メソッド呼出し時のオーバヘッドにより、性能劣化する場合があります。
スナップの環境を設定しない場合、または、IJServerの起動時に指定するスナップの出力レベルを1または2にしてスナップ出力をした場合、J2EEアプリケーションのデバッグ情報がコンテナログに出力されることはありませんが、プログラミングするときは、注意してください。
J2EEアプリケーションからjava.util.logging.LogManagerクラスのメソッドを使用しないでください。スナップ機能利用時に正常に動作しない場合があります。
J2EEアプリケーションのユーザデバッグ情報を取得する場合、Interstageが出力しているデバッグ情報も合わせて出力されますが、動作に問題はありません。