0

データベースにクエリを実行し、リクエストパラメーターに基づいて応答を返す単純なJava RESTfulサービスがあります。Apache access_log に基づいて簡単なレポートを生成する必要があります。たとえば、1 日あたりのクエリ数、同様のクエリ数などです。

生成する必要があるレポートの 1 つは、結果を返さないクエリを一覧表示することです。どうやってこれを達成するのだろうと思っています。結果がゼロの応答xmlがまだ返されるため、Apacheログの応答サイズに頼ることはできません。

クエリが結果を返さない場合はカスタム Cookie を設定し、Apache ログに出力することを考えています。


LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{Cookie}i\"" combined-cookie

これが機能するかどうか、または正直なところ、これが正しいアプローチであるかどうかはわかりません。

どんな指針も高く評価されます。

ありがとう

4

1 に答える 1

1

「結果なし」応答がNNNバイトであることが確実にわかっていて、他の応答が異なる (より大きい) ことがわかっている場合は、サイズNNNの応答についてアクセス ログを照会できる可能性があります。しかし、これはちょっとしたハックであり、何らかの理由で空の応答のサイズが変化すると脆弱になります。

Apache には、応答の内容を検査し、データのプロパティに基づいて変数を設定する機能が組み込まれているとは思いません。(mod_ext_filter で非常にハックなことを実行できる可能性がありますが、手間をかける価値はなく、パフォーマンスが低下する可能性があります。)

応答を生成しているサーバー コードを変更する機能が既にあるようです。そのため、Apache ロギングを使用しようとはしません。代わりに、サーバーにログ機能を追加します。すべての応答は、別のログ ファイルに行を出力する可能性があります。行は次のようになります。

2012-06-14 14:02:15.345 count=0 status=Completed
2012-06-14 14:02:15.906 count=12 status=Completed
...

そうすれば、必要なレポートの種類が簡単になります。

しかし、絶対に Apache を使用する必要がある場合は、 のような新しい HTTP ヘッダーを発明し、X-Query-Resultサーバーを調整してすべての応答にそのヘッダーを設定することをお勧めします。例えば:

X-Query-Result: count=0 status=Completed

次に、提案したものと同様に\"%{X-Query-Result}i\"、ログ形式で使用します。Cookie に関連する余分な「重み」を避けるためだけに、Cookie よりもこれを選択します。

于 2012-06-14T19:05:35.597 に答える