2016-07-04 11 views
0

私はサーバー上にRESTサービスを持っています。サービスはlog4jのおかげでいくつかのことをやって、いくつかのメッセージを記録しています。RESTサービスからHTMLページにログを送信

私は、AJAXのおかげで応答を得ているサーバーBのWebページを持っています。応答(私にはうまくいく)を受け取ることは別として、サーバー側からのログメッセージをページに出力したいと思います。

つまり、サーバーA側に新しいログメッセージが表示されるたびに、表示されます。

これを達成するためのアイデアはありますか?

編集: log4jソケットアペンダからログを取得するにはどうすればよいですか?

+0

DBにログを保存する方がより簡単に聞こえます – HRgiger

+1

log4jはdev-stuff、言語レベルです。それをビジネス要件と混同しないでください。明示的に残りの情報を送信するために、別のビジネスレベルのものを実装してください。 – kan

+0

@kanはアジッド・ポイントを持っています – HRgiger

答えて

0

私はようやく私の問題を解決する方法を見つけました:

私はシングルトンロガーを作成しました。私はメッセージをログに記録するたびに、私はロガーのインスタンスを取得して、新しいメッセージをログのConcurrentLinkedListに追加しています。

一方、私は新しいレストサービスを作成しました。毎秒私はajaxクエリでこのサービスを呼び出します。リストのログメッセージを削除して返します。ビューに表示されます。

0

RAWエンドポイントを作成して生ログデータをtext/plainとして取得します。

GET /logs?from=2016-07-03T10:00:00Z&to=2016-07-04T10:00:00Z HTTP/1.1 
Accept: text/plain 

を次に、あなたのクライアントは、このようなエンドポイントを要求することができ、取得:

GET /logs HTTP/1.1 
Accept: text/plain 

をあなたはまた、次のように、日付と時刻でログをフィルタリングするために、いくつかのクエリ文字列パラメータを提供することができ、次のように、それは何かかもしれませんHTMLページにログを表示することができます。

サーバー側でHTMLページをレンダリングする場合は、text/plainを受け入れる代わりに、text/htmlを受け入れます。


リアルタイムロギングの場合、あなたはWebSocketsを検討することができます。

+0

次に、ログをリアルタイムで取得したい場合は、エンドポイントに1秒ごとにajaxリクエストを実行し、htmlページのログを表示するdivを更新します。それが良い解決策だと思いますか? – L01c

+1

@ L01cリアルタイムでは、ウェブソケットを検討することができます。 –

関連する問題