カテゴリ: Jakarta EE 更新日: 2026/01/31

JakartaEEデバッグ用カスタムフィルタの作り方を徹底解説!初心者でもできるログ出力とリクエスト解析

Jakarta EE デバッグ用カスタムフィルタの作り方
Jakarta EE デバッグ用カスタムフィルタの作り方

先生と生徒の会話形式で理解しよう

生徒

「先生、JakartaEEの開発でリクエストやレスポンスの中身を確認したいときはどうすればいいんですか?」

先生

「そういうときはカスタムフィルタを使うと便利ですよ。リクエストやレスポンスを処理する前後でログを出力できるので、デバッグがしやすくなります。」

生徒

「なるほど!それなら実際に作り方を教えてもらえますか?」

先生

「もちろんです。JakartaEEでのデバッグ用カスタムフィルタの作成手順を一緒に見ていきましょう!」

1. デバッグ用カスタムフィルタの役割

1. デバッグ用カスタムフィルタの役割
1. デバッグ用カスタムフィルタの役割

JakartaEEのフィルタは、リクエストやレスポンスの処理前後で共通の処理を挟み込む仕組みです。デバッグ用にフィルタを使うと、次のようなことが可能になります。

  • リクエストパラメータをログに出力する
  • レスポンスの処理時間を計測する
  • 特定のURLへのアクセスを監視する
  • エラーメッセージや例外の内容を記録する

これにより、アプリケーションの挙動を細かく追跡でき、問題の特定が容易になります。

2. デバッグ用カスタムフィルタの基本構造

2. デバッグ用カスタムフィルタの基本構造
2. デバッグ用カスタムフィルタの基本構造

フィルタはFilterインターフェースを実装することで作成できます。JakartaEEではアノテーション@WebFilterを使って簡単に定義できます。


import jakarta.servlet.*;
import jakarta.servlet.annotation.WebFilter;
import java.io.IOException;

@WebFilter("/*")
public class DebugFilter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        long start = System.currentTimeMillis();

        System.out.println("リクエスト情報: " + request.getRemoteAddr());

        chain.doFilter(request, response);

        long end = System.currentTimeMillis();
        System.out.println("処理時間: " + (end - start) + "ms");
    }
}

この例ではアクセス元のIPアドレスと処理時間をログに出力しています。デバッグ時に役立つ情報を自由に追加できます。

3. リクエストパラメータを確認する方法

3. リクエストパラメータを確認する方法
3. リクエストパラメータを確認する方法

リクエストパラメータをデバッグしたいときは、request.getParameterMap()を使って全てのキーと値を出力できます。入力フォームの値やクエリ文字列を確認する際に便利です。


request.getParameterMap().forEach((key, values) -> {
    System.out.println("パラメータ: " + key + " = " + String.join(",", values));
});

これをフィルタに組み込めば、送信されたデータを簡単に追跡できます。

4. レスポンスサイズやコンテンツタイプの確認

4. レスポンスサイズやコンテンツタイプの確認
4. レスポンスサイズやコンテンツタイプの確認

デバッグフィルタではレスポンスの情報も出力できます。例えばresponse.getContentType()を使えば、返却するデータの種類(HTML、JSON、XMLなど)を確認可能です。これにより、想定した形式でレスポンスが返っているかをチェックできます。

5. ログ出力の工夫

5. ログ出力の工夫
5. ログ出力の工夫

デバッグ用フィルタではSystem.out.printlnでも出力できますが、本番環境ではSLF4JLog4jなどのログライブラリを利用するのがおすすめです。ログレベルを切り替えることで、必要な情報だけを効率的に記録できます。

6. デバッグ用フィルタを使うときの注意点

6. デバッグ用フィルタを使うときの注意点
6. デバッグ用フィルタを使うときの注意点

デバッグ用フィルタは便利ですが、使い方を誤るとパフォーマンスに影響を与える場合があります。例えば、全てのリクエストパラメータを毎回出力するとログが膨大になり、ディスクを圧迫する可能性があります。そのため、開発環境と本番環境で設定を切り替えたり、特定のURLにだけ適用する工夫が必要です。

7. 初心者が練習するときのポイント

7. 初心者が練習するときのポイント
7. 初心者が練習するときのポイント

これからJakartaEEのフィルタを使ってデバッグを学ぶ初心者は、次のようなステップで取り組むと理解が深まります。

  • 最初はアクセス時間やIPアドレスを出力して仕組みを理解する
  • 次にリクエストパラメータやレスポンス情報を追加してみる
  • ログライブラリを導入して効率的な記録に切り替える
  • 不要になったらデバッグフィルタを無効化する習慣をつける

このように段階的に学んでいけば、JakartaEEのデバッグフィルタを安心して活用できるようになります。

関連記事:
カテゴリの一覧へ
新着記事
New1
Jakarta EE
Jakarta EEとクラウドネイティブ開発の相性とは?初心者向けにわかりやすく解説
New2
Jakarta EE
JakartaEE JSPのリクエスト属性とスコープの基本を徹底解説!初心者向け入門ガイド
New3
Play Framework
Play Frameworkのビューテストを徹底解説!Twirlテンプレートの品質を高める方法
New4
Jakarta EE
JakartaEE フィルタで認証と認可を実装する方法を初心者向けに解説!サーブレットのセキュリティ入門
人気記事
No.1
Java&Spring記事人気No1
Jakarta EE
Jakarta EEとSpringの比較|どちらを選ぶべきか?初心者向けに徹底解説!
No.2
Java&Spring記事人気No2
Play Framework
Play Frameworkのビューを共通化!テンプレート間のインクルード方法を徹底解説
No.3
Java&Spring記事人気No3
Play Framework
Play Frameworkプロジェクト作成直後にやるべき初期設定ガイド!初心者でも安心
No.4
Java&Spring記事人気No4
Jakarta EE
Jakarta サーブレットのHttpServletRequestを徹底解説!初心者でもわかる基本操作と使い方
No.5
Java&Spring記事人気No5
Play Framework
Play Frameworkで多言語対応(i18n)を徹底解説!Twirlテンプレートでの使い方
No.6
Java&Spring記事人気No6
Play Framework
Play FrameworkでCSSやJavaScriptを読み込む方法を徹底解説!静的リソースの組み込みガイド
No.7
Java&Spring記事人気No7
Jakarta EE
Jakarta EEとJava EEアプリの互換性を完全解説!移行で困らないための基礎知識
No.8
Java&Spring記事人気No8
Jakarta EE
Jakarta EEの標準仕様とAPI一覧を完全解説!初心者でもわかるエンタープライズJavaの基本