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