すべてのアプリケーション ログを集中管理したい (理想的にはほぼリアルタイムで)。Log4 Appender を使用します。どちらを使用する必要がありますか:
- JMS キューでログ イベントを送信する
- syslog / syslog-ng
- localfile に書き込み、rsync (3 秒ごと) を使用してログを複製します。
- 一元化された REST HTTP サービスに POST を実行する
どちらを使用していますか?
要件によって異なります。(JMS のように) キューにログを記録すると、ログ メッセージがキューに書き込まれるとすぐにログ操作を返すことができるため、オプションの柔軟性が最も高くなります。その後、別のプロセスでこれらのログ メッセージをキューから取り出して、好みのログ ストア (データベース、ファイル システムなど) に書き込むことができます。
(わずかな) 欠点は、ログ メッセージがログを記録しているシステムよりわずかに遅れることですが、これは、ファイルベースのログであっても、ほとんどの場合に当てはまります。
これはやり過ぎかもしれませんが、Splunkを見たことがありますか? Java アプリの場合、私は Log4J または SLF4J を使用してファイルにログを記録しました。その後、Splunk はログを集約して検索可能にします。
Log4 (Log4j?) には詳しくありませんが、データベース アペンダーはありますか? これにより、必要な集中化が実現し、ログを複製する必要がなくなります。
それは本当にあなたが望むものに大きく依存します..syslogはアプリケーションのログには適していないと思いますが、インフラストラクチャのログには適しています. 詳細をあまり知らなくても、リストした 4 つのオプションはすべて問題ないように見えます。これを使用します。
ところで、log4jにはAsyncAppenderがあり、キューと専用のコンシューマースレッドを使用してログを記録します