LogComposer派生クラスを作成することで、ログ本文の編集を行う処理を記述することが可能です。
ログ出力機能のカスタマイズ
LogComposerオブジェクトは、アプリケーションクラスで任意に設定することができます。 ApplicationProfileクラスのnewLogComposerをオーバーライドし、LogComposerオブジェクトを返すことで、ログのフォーマットや出力先を変えることができます。デフォルトでは、キュー有効で、標準出力に日付付きメッセージを出力します。
public class SampleApplication extends com.fujitsu.uji.ApplicationProfile
{
public LogComposer newLogComposer() {
LogComposer lc;
try {
lc = LogComposer.getFileOutputInstance("c:\\myapp\\mylog.txt", true, new LineLogFormat("%d %m"));
} catch(IOException e) {
return null; // デフォルトを使用
}
lc.setQueueSize(1000);
lc.enableQueue();
lc.setLogLevel(9);
return lc;
}
}ログ出力を無効にする場合は、空のLogComposerオブジェクトを返します。
public LogComposer newLogComposer() {
return new LogComposer();
}派生クラスでは、ログ本文の編集を行ったあとに、LogComposerクラスのprintlnメソッドを呼び出し、ログ出力を行います。
派生クラスの作成
メッセージの編集を行うようprintlnメソッドをオーバーライドし、ログを出力するLogComposer派生クラスの作成例を以下に示します。
/**
* メッセージの編集を行う派生クラスの作成例です。
* この例では、基底クラスに LogComposerを用いています。
* 再定義するメソッドは、利用するアプリケーションの要件により異なります。
*/
package my.sample;
import com.fujitsu.uji.log.LogComposer;
public class MyLogComposer extends LogComposer {
public MyLogComposer() {
}
public void println(int level, Object obj, int back) {
// 指定のログレベルがログ出力対象になっているかを判断します。
if( isLogged(level) ) {
// メッセージの編集を行います。
StringBuffer buf = new StringBuffer();
buf.append(" PREFIX TEXT ");
buf.append( String.valueOf(obj) );
// 編集後に、基底クラスのメソッドを呼び出します。
output(level, buf.toString(), back);
}
}
}ユーザ独自のメソッドを定義し、メッセージの編集を行ってprintlnメソッドを呼び出し、ログを出力するLogComposer派生クラスの作成例を以下に示します。
/**
* メッセージの編集を行う派生クラスの作成例です。
* この例では、基底クラスに LogComposerを用いています。
*/
package my.sample;
import com.fujitsu.uji.log.LogComposer;
public class MyLogComposer2 extends LogComposer {
public MyLogComposer2() {
}
public void myPrintln(int level, Object obj1, Object obj2, int back) {
// 指定のログレベルがログ出力対象になっているかを判断します。
if( isLogged(level) ) {
// メッセージの編集を行います。
StringBuffer buf = new StringBuffer();
buf.append( String.valueOf(obj1) );
buf.append( "," );
buf.append( String.valueOf(obj2) );
// 編集後に、基底クラスのメソッドを呼び出します。
println(level, buf.toString(), back);
}
}
}注意
LogComposer派生クラスを作成する場合は、デフォルトコンストラクタを定義してください。