使用するコードにエントリおよび終了トレースポイントを追加する前に、これらのガイドラインをお読みください。
すべての Identity Manager コンポーネントの外部インタフェースメソッドには、リソースアダプタインタフェースで宣言されている public メソッドの Trace.Level1 エントリまたは終了トレースポイントを使用します。
コンストラクタや静的メソッドや Identity Manager コンポーネントの外部インタフェースに含まれていないメソッドなど、重要な public メソッド以外には、Trace.Level2 エントリまたは終了トレースポイントを使用します。
トレースポイントの中に引数を指定します。
その引数が基本型または java.lang.String でなく、各種オブジェクトの作成やメソッドの呼び出しを必要とする引数の場合は、エントリトレースポイントを条件付きにして、トレースが有効な場合のみフォーマット処理が行われるようにします。
終了トレースポイントを指定する際には、そのメソッドが基本型か java.lang.String の場合、戻り値を表示してください。戻り値に何らかのフォーマットが必要な場合は、このガイドラインに説明したとおりにオブジェクトのフォーマットを条件付きにしてください。以下を使用します。
int getLevel() int getLevel (Method) boolean isLogging(level,method) boolean level1 (method) boolean level2 (method) boolean level31 (method) boolean level4 (method) |
複数の java.lang.String を一緒に付与する必要がある情報をトレースする場合は、java.lang.String の代わりに java.lang.StringBuffer を使用します。java.lang.StringBuffer を使用するよりも、付与した方が早く済みます。また、前述の箇条書き項目のとおりに条件付きにしてください。
重要なコンストラクタにエントリまたは終了トレースポイントを追加する際は、コンストラクタ内の this() や super() メソッド呼び出しの前にトレースポイントを配備することはできません。this() や super() メソッド呼び出しの直後に、エントリトレースポイントを配備してください。
例外条件をトレースするには、終了トレースポイントを使用しないでください。メソッドが例外をスローする場合は、例外がスローされる直前に、エントリまたは終了トレースポイントと同じトレースレベルで、例外トレースポイントを使用します。詳細は、「例外トレースポイントの使用方法」を参照してください。
メソッドにエントリトレースポイントが含まれている場合は、そのメソッドに throwing メソッド、caught メソッド、または終了のいずれかを実行するコードパスも含めてください。
次に、簡易エントリと終了トレース文の例を示します。この例では、次の CLASS 変数が各文に宣言されているものとします。
private static final String CLASS = "com.waveset.adapter.MyResourceAdapter"; protected static Trace _trace = Trace.getTrace();
final String METHOD = methodName; _trace.entry(_trace.LEVEL1, CLASS, METHOD); _trace.entry(_trace.LEVEL1, CLASS, METHOD, user); if (_trace.level1(CLASS, METHOD)) { _trace.entry(_trace.ALWAYS, CLASS, METHOD, user= + user); } // Show the size of an array argument // ASSUME: password is an argument to the method // Note the use of the Util.length() method. It is // a convenience method that guards against null. if (_trace.level1(CLASS, METHOD)) { StringBuffer sb = new StringBuffer(32); sb.append(password length=); ab.append(Util.length(password)); _trace.entry(_trace.ALWAYS, CLASS, METHOD, sb.toString()); }
_trace.exit(_trace.LEVEL1, CLASS, METHOD); _trace.exit(_trace.LEVEL1, CLASS, METHOD, returnValue); if (_trace.level1(CLASS, METHOD)) { _trace.exit(_trace.ALWAYS, CLASS, METHOD, returnValue != null ? returnValue.getName() : returnValue); } // Show the size of an array String[] accounts = ... if (_trace.level1(CLASS, METHOD)) { StringBuffer sb = new StringBuffer(32) sb.append(accounts length=); ab.append(accounts.length); _trace.exit(_trace.ALWAYS, CLASS, METHOD, sb.toString()); }