ログ出力の基本操作
ログを出力するためには、LogComposerオブジェクトを使用します。これはアプリケーションクラスまたはDispatchContextから参照可能です。
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("処理を開始"); } }
ログのレベル
Apcoordinatorのログには重要度のレベルを設定することができます。ログのレベルは0を最重要とし、数が大きくなるほど重要度が下がります。レベルは任意に設定できます。
以下は、Apcoordinatorで使用しているレベルです。
レベル | 出力するログ | 説明 |
---|---|---|
3: | Apcoordinatorのエラーログのレベル | UJIで始まるエラーコードとメッセージを出力 |
10: | Apcoordinatorのインフォメーションログのレベル | 内部の実行状況を表すログを出力 |
20: | Apcoordinatorのトレースログのレベル | データBeanのダンプや詳細な実行状況を表すログを出力 |
注意
Apcoordinatorが出力するログは、機能の追加や改善などにより、将来、変更される場合があります。
以下は、デフォルトで定義するログのレベルです。
レベル | 出力するログ | 説明 |
---|---|---|
0: | 最重要のログ | ユーザアプリケーションが出力するログで最重要のレベルとして利用 |
5: | ログレベル未指定メッセージのデフォルトレベルの初期値 | デフォルトの出力レベル |
ログのレベルは、表示時に指定します。
LogComposer lc = context.getApplicationProfile().getLogComposer(); lc.println(7, "処理を開始");
レベルを指定しないとデフォルトのレベルが使用されます。デフォルトレベルの初期値は5ですが、setDefaultLevelメソッドで設定を変更できます。
lc.setDefaultLevel(7); lc.println("処理を開始");
ログの出力レベルを設定することによって、不要なログ出力を抑制することができます。デフォルトでは10(レベル10以下のログのみ出力)となっています。
lc.setLogLevel(5); // レベル5以下のログを出力
ログ出力レベルは初期化パラメタ、および、ログ定義ファイルでも設定することができます。ただし、setLogLevelメソッドでログ出力レベルが設定されている場合は、そちらが優先されます。初期化パラメタについては“13.2 初期化パラメタ”を参照してください。ログ定義ファイルについては定義ファイルを用いたログ出力を参照してください。以下はWebアプリケーションでweb.xmlファイルにログ出力レベルを定義する例です。
<web-app xmlns=http://java.sun.com/xml/ns/j2ee xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:schemaLocation=http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd version="2.4"> <context-param> <param-name>logLevel</param-name> <param-value>5</param-value> </context-param> </web-app>
ログ出力のために文字列化の処理を行う場合、予めログレベルを判断することによって不要な処理を除外することができます。
int level = 5; if(lc.isLogged(level)) { String message = "文字列の" + a + "演算は" + b + "ハイコスト"; lc.println(level, message); }
フォーマットの設定
LineLogFormatオブジェクトは、ログ出力のフォーマットを設定します。LogComposerオブジェクト作成時に任意のフォーマットを指定することができます。
lc = LogComposer.getFileOutputInstance("c:\\myapp\\mylog.txt", true, new LineLogFormat("%d %m"));
以下の指定により、システム情報を表示することができます。なお、コンテキストIDは、DispatchContextクラスから参照したLogComposerオブジェクトを使用した場合に出力されます。
%m | メッセージ本文 |
%i | コンテキストID |
%d | 時刻 |
%t | スレッド名 |
%s | メソッド名 |
%l | ログレベル |
%% | %記号を表示する |
例として"%d %m"の指定では以下のようなログが出力されます。
2001/01/05 16:47:49 uji:no entry in commands.map for TestUseBean.dataBean1;submit