Webアプリケーションがリクエストを受け付けるごとにコンテキストIDを生成します。 WebアプリケーションからEJBアプリケーションを呼び出した場合に、WebアプリケーションとEJBアプリケーションで同一のコンテキストIDがログに出力されます。コンテキストIDにより、WebアプリケーションからEJBアプリケーションを呼び出す両者のログを対応づけて参照することが可能となります。
コンテキストIDの生成
コンテキストIDはセションIDを組み込んで生成されます。初期化パラメタuji.log.contextidModeの指定によってコンテキストIDの長さが異なります。
trueを指定した場合は、セションIDの全体がコンテキストIDに組み込まれます。
falseを指定した場合は、セションIDの末尾54文字がコンテキストIDに組み込まれます。54文字に満たない場合は、セションIDの全体がコンテキストIDに組み込まれます。
省略時はtrueです。
以下はweb.xmlで初期化パラメタuji.log.contextidModeを指定する例です。
<context-param> <param-name>uji.log.contextidMode</param-name> <param-value>true</param-value> </context-param>
ログ出力の操作
コンテキストID付きのログを出力するには、DispatchContextクラスから取得したLogComposerを使用します。
import com.fujitsu.uji.log.*; import com.fujitsu.uji.GenericHandler; public class SampleHandler extends GenericHandler { .... public void startup(DispatchContext context) { .... LogComposer lc = context.getLogComposer(); lc.println("処理を開始"); } }
デフォルトのフォーマット「%d %i%m」で出力した場合、以下のように出力されます。
2008/01/31 20:40:07 [0140-1U758OIN0N39RFV1A9NLFPVOERUUNJ3NEBBI169TNLLBG963Q8C9QCD5PSBG200008000000.IJServer_001-001]処理を開始
アプリケーションクラスから取得したLogComposerを使用するとコンテキストIDは出力されません。
import com.fujitsu.uji.log.*; import com.fujitsu.uji.GenericHandler; public class SampleHandler extends GenericHandler { .... public void startup(DispatchContext context) { .... LogComposer lc = context.getApplicationProfile().getLogComposer(); lc.println("処理を開始"); } }
デフォルトのフォーマット「%d %i%m」で出力した場合、以下のように出力されます。
2004/08/19 9:48:17 処理を開始