2019年11月2日
javax.servlet.Filterを実装してHTTPリクエストの内容を解析してログを出力する便利なFilterクラスを紹介します。
このログフィルタは、ログ出力に「java.util.logging.Logger」を使用しており、ログレベルを変更することで出力する情報を変更できます。
Webアプリケーション構築する上で、メインとなる業務処理のほかに、その前後で共通した副次的な処理を行う必要があります。
例えば、クライアントの認証や、権限チェック、ロギング等です。
このような副次的な処理をそれぞれのリソースでコーディングすると、ソフトウェアの保守性を妨げる大きな原因となり、メンテナンスのしにくいアプリケーションになってしまいます。
javax.servlet.Filterを実装すれば、リクエスがサーブレットクラスに渡される前に、この副次的な処理を、共通して実行させることができます。
またフィルタの設定はweb.xmlで出来るので、ソースコードを変更することなく、フィルタを追加したり削除することが柔軟に出来ます。
<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フレームワークを使用した場合のurl-patternは以下になります。
<url-pattern>*.do</url-pattern>
ログ情報 | ログレベル |
---|---|
Cookie情報 | FINE |
HTTPヘッダ情報 | FINE |
HTTPその他の情報 | FINE |
HTTPリクエストパラメータ | CONFIG |
requestスコープのオブジェクト | CONFIG |
sessionスコープのオブジェクト | CONFIG |
リクエスト前後のメモリー使用量 | CONFIG |
画面遷移情報 | INFO |
<init-param> <param-name>logging.Level</param-name> <param-value>INFO</param-value> </init-param>