ログメッセージをファイルシステムに非同期で書き込むJava Loggingフレームワークを作成しています。このため私はFileHandlerを使用して最終的にFileに書き込むMemoryHandlerを使用しています。私は、ログに記録されるとすぐにファイルにログメッセージを書きたくない代わりに、バッファが一定の時間に達すると、外部クラスプッシュを通じてメモリのすべての内容をフラッシュしたい。外部のクラスを記述してMemoryHandlerのpushメソッドを明示的に呼び出す良い例を教えてもらえますか?前もって感謝します。MemoryHandlerバッファからログメッセージをプッシュするための外部クラスを作成する
public void log(String msg) {
buffer.append(msg);
if (buffer.length() > threshold) {
new Thread() {
public void run() {
flush();
}
}.start();
}
private void flush() {
// ...
}
これはフラッシュ非同期を維持し、回避されます。そうのようにログに記録するメッセージを追加する方法では
MemoryHandlerは、それがしきい値に達するタイミングを(おそらく)伝えることができるので、なぜそれ自体をフラッシュできないのですか? – jpm
フィードバックいただきありがとうございます。それは自分自身をフラッシュすることができますが、私は、外部クラス(スレッドかもしれません)からこれを呼び出すことによって、オンラインアプリケーションのIO待機を避けたかったのです。 – user1296594