电竞比分网-中国电竞赛事及体育赛事平台

分享

Java ログフィルタでHTTPを解析

 偷樂圖書管 2014-04-13

javax.servlet.Filterを?qū)g裝してHTTPリクエストの內(nèi)容を解析してログを出力する便利なFilterクラスを紹介します。
このログフィルタは、ログ出力に「java.util.logging.Logger」を使用しており、ログレベルを変更することで出力する情報(bào)を変更できます。

javax.servlet.Filterとは

Webアプリケーション構(gòu)築する上で、メインとなる業(yè)務(wù)処理のほかに、その前後で共通した副次的な処理を行う必要があります。例えば、クライアントの認(rèn)証や、権限チェック、ロギング等です。このような副次的な処理をそれぞれのリソースでコーディングすると、ソフトウェアの保守性を妨げる大きな原因となり、メンテナンスのしにくいアプリケーションになってしまいます。

javax.servlet.Filterを?qū)g裝すれば、リクエスがサーブレットクラスに渡される前に、この副次的な処理を、共通して実行させることができます。
またフィルタの設(shè)定はweb.xmlで出來るので、ソースコードを変更することなく、フィルタを追加したり削除することが柔軟に出來ます。

ログフィルタを使ってみる

HTTPリクエストにフィルタを通して、HTTPリクエストを解析するログフィルタを?qū)g際に使ってみましょう。
今回はTomcatに最初からあるexamplesアプリケーションを使用します。
以下の設(shè)定を行うとこのフィルタはすぐに実行できます。
1.ソースコードを取得してコンパイルする。
2.コンパイルしたクラスファイルを、「/examples/WEB-INF/classes」配下に配置します。
3.web.xmlに以下の定義を設(shè)定する。
  <filter>
   <filter-name>LogFilter</filter-name>
   <filter-class>LogFilter</filter-class>
   <init-param>
    <param-name>logging.Level</param-name>
    <param-value>FINE</param-value>
   </init-param>
  </filter>
  <filter-mapping> 
   <filter-name>LogFilter</filter-name>
   <url-pattern>/*</url-pattern>
  </filter-mapping>
※Strutsフレームワークを使用した場(chǎng)合のurl-patternは以下になります。
   <url-pattern>*.do</url-pattern>

Sessions Exampleの畫面を?qū)g行したログ出力結(jié)果を確認(rèn)してみてください。
javax.servlet.FilterログフィルタでWebアプリケーション解析

ログ出力結(jié)果
※もっとも詳細(xì)なログを出力した場(chǎng)合です。

出力するログ情報(bào)とログレベル

●ログ出力內(nèi)容
ログ情報(bào) ログレベル
Cookie情報(bào) FINE
HTTPヘッダ情報(bào) FINE
HTTPその他の情報(bào) FINE
HTTPリクエストパラメータ CONFIG
requestスコープのオブジェクト CONFIG
sessionスコープのオブジェクト CONFIG
リクエスト前後のメモリー使用量 CONFIG
畫面遷移情報(bào) INFO

ログレベルは以下のように使い分けると良いでしょう。
  • FINE もっとも詳細(xì)なログを出力します。HTTPリクエストを詳しく解析したい場(chǎng)合に設(shè)定します。
  • CONFIG  やや詳細(xì)なログを出力します。開発期間中はこのレベルにしているとよいでしょう。
  • INFO  畫面遷移情報(bào)のみを出力します。
●ログレベルの変更方法
初期化パラメータlogging.Levelを設(shè)定することで、ログの出力レベルを変更できます。
例:
   <init-param>
    <param-name>logging.Level</param-name>
    <param-value>INFO</param-value>
   </init-param>

ソースコード

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多