Apcoordinatorはアプリケーションログを採取する機構を持っており、アプリケーションから任意の情報をログに出力できます。
基本操作
ビジネスクラスでログを出力するためには、com.fujitsu.uji.log.LogComposerクラスを以下の手順で使用します。
アプリケーションクラス、または、DispatchContextからgetLogComposerメソッドでLogComposerオブジェクトを取得します。
LogComposerのprintlnメソッドで情報をログに出力します。
DispatchContextクラスを用いてLogComposerを参照するとリクエストを識別するコンテキストIDをログへ出力します。アプリケーションクラスを用いてLogComposerを参照すると従来と同様なログ出力が行えます。
DispatchContextでLogComposerを参照する例
import com.fujitsu.uji.log.LogComposer; import com.fujitsu.uji.GenericHandler; public class SampleHandler extends GenericHandler { .... public void startup(DispatchContext context) { .... LogComposer lc = context.getLogComposer(); lc.println("処理を開始"); } }
デフォルトフォーマットを利用している場合、時刻、コンテキストID、メッセージ本文の順で出力されます。
2008/01/31 20:40:07 [0140-1U758OIN0N39RFV1A9NLFPVOERUUNJ3NEBBI169TNLLBG963Q8C9QCD5PSBG200008000000.IJServer_001-001]処理を開始
アプリケーションクラスでLogComposerを参照する例
import com.fujitsu.uji.log.LogComposer; import com.fujitsu.uji.ApplicationProfile; import com.fujitsu.uji.GenericHandler; public class SampleHandler extends GenericHandler { .... public void startup(DispatchContext context) { .... ApplicationProfile ap = context.getApplicationProfile(); LogComposer lc = ap.getLogComposer(); lc.println("処理を開始"); } }
デフォルトフォーマットを利用している場合、時刻、メッセージ本文の順で出力されます。
2004/08/19 9:48:17 処理を開始
ログの出力先を変更する
デフォルトでは、ログは標準出力に出力されます。ログの出力先は、定義ファイルを用いて任意の出力先を指定するか、アプリケーションクラスが持っているデフォルトのLogComposerオブジェクトを入れ替えることで変更します。
定義ファイルで、ログの出力先を指定する
例えば、ログの出力先をファイルにするには、以下のようにします。
ログ定義ファイルへ管理名mylogを定義します。
mylogの出力先をc:\myapp\mylog.txtとします。
定義ファイルを設定ファイルフォルダへ配置します。
LogComposerオブジェクトを参照するには、管理名を引数として、DispatchContextクラスのメソッドgetLogComposerを呼び出します。
定義ファイルの例です。
<logComposer name="mylog"> <output name="sysFileOut" type="file"> <param name="path" value="c:\myapp> <param name="prefix" value="mylog"/> <param name="extension" value=".txt"/> </output> </logComposer>
ビジネスクラスでログを出力する例です。
import com.fujitsu.uji.log.LogComposer; import com.fujitsu.uji.GenericHandler; public class SampleHandler extends GenericHandler { .... public void startup(DispatchContext context) { .... LogComposer lc = context.getLogComposer("mylog"); lc.println("処理を開始"); } }
プログラムにより出力先を指定する
例えば、ログの出力先をファイルにするには、以下のようにします。
アプリケーションクラスを継承して、ユーザー定義のアプリケーションクラスを作成します。
ユーザー定義のアプリケーションクラスでnewLogComposerメソッドをオーバライドし、ログの出力先を設定したLogComposerオブジェクトを返却します。
LogComposerオブジェクトを作成するには、ファイル名を引数として、LogComposerクラスのstaticメソッドgetFileOutputInstanceを呼び出します。
public class SampleApplication extends com.fujitsu.uji.ApplicationProfile { public LogComposer newLogComposer() { LogComposer lc; try { lc = LogComposer.getFileOutputInstance("c:\\myapp\\mylog.txt", true); } catch(IOException e) { return null; // デフォルトのLogComposerオブジェクトを使用 } return lc; } }
この例では、ログの出力先をファイルc:\myapp\mylog.txtにしています。また、ユーザー定義のアプリケーションクラスのクラス名をSampleApplicationとしています。
なお、ユーザー定義のアプリケーションクラスを有効にするために、以下の作業が必要になります。具体的な方法は“3.5 ファクトリクラス”を参照してください。
ファクトリクラスを作成し、ユーザー定義アプリケーションクラスのオブジェクトが作成されるようにします。
初期化パラメタでファクトリクラスのクラス名を指定します。
関連する機能
ログについては以下の機能が使用可能です。
機能 | 詳細解説 |
---|---|
出力するログの書式を指定する | |
ログの出力をキューイングする | |
重要度に応じて出力の有無を切り替える | |
特定の文字列を含むログだけ出力する | |
syslogへログを送信する |
関連項目
APIリファレンスのLogComposer