だから私は他の多くのアプリケーションからのログエントリを受け入れるアプリケーションを書いています。私たちは主にを使用しますlog4j
。
これらのアプリケーションは異なるマシン上にあるため、各アプリケーションからPOSTされたデータを受け入れるWebサービスが必要でした。その後、検索などを行うことができます。
Logglyのようにこれを処理するサービスがあることはわかっていますが、自分で作成したいと思います(主に、セキュリティ上の目的と、サードパーティプロバイダーのログ情報を好まない会社のためです)。
とにかく、私は自分のカスタムHttpAppenderを正常に動作させることができました。各アプリケーションがメッセージをWebサービスに送信するようにします。
しかし、シャンパンを始める前に、HTTPを介した直接投稿は悪いことである可能性があることに気付きました。これらのアプリの中には、ログに数百万行を生成するものがあるためです。だから私が最後に欲しいのは、HttpAppenderがT1ラインか何かをダウンさせることです。
したがって、私のアイデアは、HTTP POSTを何らかの方法でバッファリングしてから、それらのバッファを1つのPOSTで定期的に送信することでした。したがって、大きな投稿は多く、小さな投稿は多くなります。
もちろん、同じマシン上でローカルにReddis / memcachedのようなものでバッファリングすることは役に立ちますが、(同じサーバー上で)外部キャッシュを使用できないと想定する必要があります。したがって、アペンダーのメモリ/プロセスにキャッシュする必要があります。
私はこれらのHTTP投稿をバッファリングして書き込みトラックにいますか?または、ログファイルにバッファを書き込んでから、それらのログファイルを定期的に投稿する必要がありますか?