2016-09-13 4 views
0

私はクラウドにデプロイする必要があるWebアプリケーションを開発中です。アプリケーションのログメッセージを安全に保存できるクラウドサービスがあります。これは、REST APIを使用してクラウドによって公開されます.REST APIは、json形式で最大25個のログメッセージを受け取ることができます。私たちは現在log4j(他のものも開いています)を使ってファイルにログインしています。今度は、アプリケーションをファイルベースのロギングからクラウドREST APIを使用するように移行する必要があります。ログメッセージバッファーを作成するための最適なオプション

私はすべてのログメッセージのためのREST API呼び出しを作成し、アプリケーションを遅くするために高価であることを検討しています。この文脈で

は、私はバッファに書き込むことができるカスタムアペンダを書いて検討しています。バッファは、メモリ内または永続的なバッファにすることができます。このバッファは、クラウドREST APIに25個のメッセージを送信することによって、別々のスレッドまたはプロセスによって定期的に読み込まれ、空にされます。

オプション1:

、インメモリバッファ 私のカスタムアペンダを使用して、メモリ・リスト内にメッセージを書き込み、それを埋め続けるだろう。 バッファから25メッセージを一度に削除し、REST APIを使用してクラウドに書き込むデーモンスレッドがあります。このアプローチの欠点は、アプリケーション/サーバ/ノードのクラッシュ時に、クラッシュが発生した理由を診断する重大なログメッセージを失うことです。これが正しい考え方であるかどうかはわかりません。

オプション2:永続的バッファデータベース/メッセージ・キューを使用して

アペンダは、一時的にデータベーステーブルにメッセージをログに記録したりからメッセージをピックアップして別の実行時間の長いジョブによって処理されるメッセージキューに投稿することができますdbまたはキューを作成し、REST APIを使用してクラウドにポストします。

どのオプションが最適に見えるか教えてください。

+0

各ログをファイルに記録してから、inmemoryを使用して25個のログを追加してクラウドに送信することができます。 –

+0

オプション1には未来があると思います。アプリケーションのクラッシュによってログが失われることは既に説明しました。 – dit

答えて

0

あり、ビルドの多くはlog4jのでアペンダである:https://logging.apache.org/log4j/2.x/manual/appenders.html、あなたは、クラウド内の専用のサービスを使用している場合、彼らは、特定のアペンダを与える可能性があります。 ご使用の環境にある場合は、log4j rollingfile apenderでELKのようなスタックを試してみてください。この手法では、ログエントリを失うことはありません。

関連する問題