Apcoordinator ユーザーズガイド |
目次 |
第2部 Apcoordinatorコアの機能 | > 第4章 APIを使ったプログラミング | > 4.2 アプリケーションログ |
あらかじめアプリケーションログで利用するキューを無効にすることが可能です。 初期化パラメタ"uji.log.enablecache"へfalseを指定するとキャッシュを無効にします。初期化パラメタは、ApplicationProfileクラス、または、DispatchContextクラスのgetLogComposer()メソッドで参照するLogComposerオブジェクトに有効です。 キューイングの有効・無効は初期化パラメタ、および、ログ定義ファイルでも設定することができます。ただし、disableQueueメソッドで設定されている場合は、そちらが優先されます。初期化パラメタについては初期化パラメタを参照してください。ログ定義ファイルについては定義ファイルを用いたログ出力を参照してください。以下はWebアプリケーションでweb.xmlファイルにログのキュー利用を無効とする定義の例です。
LogComposer lc = context.getApplicationProfile().getLogComposer(); synchronized(lc) { lc.disableQueue(true); lc.println(3, "重要なメッセージ"); lc.enableQueue(); }
<web-app> <context-param> <param-name>uji.log.enablecache</param-name> <param-value>false</param-value> </context-param> </web-app>
ログのキューイングを有効にした場合、LogComposer
インスタンスごとにキューが生成されます。このため、複数のインスタンスから同一の出力先へ出力する場合、各キューが出力するタイミングによって、ログ中に別のログが割り込んで出力される場合があります。この現象をログの混在といいます。
また、標準出力や標準エラー出力へ出力する場合、コンテナが出力するログやSystem.out.println
メソッドなどのログ出力クラス以外からの出力を行なった場合にログの混在が発生する場合があります。
複数のLogComposer
インスタンスから同一の出力先へ出力する場合は、ログの混在を回避するために、それぞれのLogComposer
インスタンスに同一のLogSink
インスタンスを設定してください。
コンテナが出力するログとのログの混在を防ぐためには、出力先を標準出力ではなく個別のファイルなどを指定して、ログ出力クラスを使用して出力するようにしてください。
lc.setQueueSize(1000);
public class SampleApplication extends com.fujitsu.uji.ApplicationProfile { LogComposer newLogComposer() { LogComposer lc; lc = LogComposer.getFileOutputInstance("c:\\myapp\\mylog.txt", true, new LineLogFormat("%d %m")); lc.setQueueSize(1000); lc.enableQueue(); lc.setLogLevel(9); return lc; } }
目次 |