2012-04-11 20 views
3

私はこの質問を持っています。私は、来るすべてのリクエストを記録するために私の春に基づいたREST APIサーバ用の小さなロギング機能を実装しています。 ユーザーの1000人がこのAPIを使用することをブロッキングI/Oロガーで期待しています。問題を解決するには2つの方法があります。 1.メモリ内のarrylistを使用して非同期ロガーを作成します。バネスケジューラを使用して定期的にログファイルに書き出します。 2. JMSを使用して、ログをキューに送信します。キューが非同期でロギングを処理するようにします。春の非同期ロガー

誰もが前に春にこれを行ったことがありますか?私はオプション2のためですが、これを行うためのより良い方法がありますか?いくつかの専門家のアドバイスが必要です。みんな、ありがとう !

詳細情報 - このREST APIはフロントエンドのRoRアプリケーションで消費されるため、同期ロギングはボトルネックになります。そのため、ユーザーの1つのセッションで、非常に頻繁に発生する100回のAPI呼び出しが発生します。 POSTで送信されたJSONと共に実際のリクエストを記録しています。

+0

すぐに使用できるソリューションを使用してみませんか?大工が自分のハンマーを造り、自分の爪を鍛造し、自分のツールベルトを縫うようにしたいのですか、何年もの既存のR&Dを活用している評判の良い企業が作ったツールを使って家を建てることに集中したいですか? – jmort253

+0

私は、同期ロギングがボトルネックになるのではないかと疑います。通常、状況が減速している場合は、ロギングの量を減らすだけです。そのため、DEBUG、INFOなどのレベルがあります。 – artbristol

+0

ありがとうございました。なぜちょうど同期ログがボトルネックになるのだろうと思っているのかについての質問を更新しました。 – gotz

答えて

3

これまで春にこれを行った人はいますか?その不思議な

ない、はい - Asynchronous Logging Using Spring

記事はあなたが任意のログイベントが失われることしたくない場合は、JMSが進むべき道であろうと述べて - それ以外の場合は非同期にこだわっが高いために理にかなっていますボリュームログ。

+0

おかげでライアン。これは面白いようです。それがうまくいくでしょう。 – gotz

0

独自のロガーを実際に作成する場合は、akkaを参照することをお勧めします。設定するのはJMSよりはるかに簡単です。

ローカルで(ローカルマシンのすべてのCPUコアを使用して)使用することも、リモートエージェントで使用することもできます。

+0

それも春のサポートを持っているように見えます。ありがとう。 – gotz

+0

@nice_ekitoこのトピックに関する学習リソースはありますか? – svlada

+0

いいえ、ロギングのための何も特別なものはありません、正式な文書:http://doc.akka.io/docs/akka/2.1.0/ –