ホームページ  >  記事  >  Java  >  Spring Boot REST API リクエスト、レスポンス、例外を一元的にログに記録するにはどうすればよいですか?

Spring Boot REST API リクエスト、レスポンス、例外を一元的にログに記録するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-23 13:48:16835ブラウズ

How Can I Centrally Log Spring Boot REST API Requests, Responses, and Exceptions?

Spring Boot で例外を含むリクエストとレスポンスを一元的にログに記録する

REST API を開発する場合、すべてのリクエストとレスポンスの包括的なログをキャプチャすることが重要です、入力パラメータ、クラスメソッド、例外を含みます。この集中ログにより、迅速なデバッグと監査が可能になります。

ベスト プラクティス アプローチ

Spring Boot は、このタスクに対して効果的で簡単なソリューションである Actuator モジュールを提供します。 Actuator は、デフォルトで最後の 100 件の HTTP リクエストをログに記録するエンドポイント (/trace または /actuator/httptrace) を提供します。

カスタマイズ

すべてのリクエストをログに記録し、エンドポイントを調整するには特定のニーズに合わせて、次のことができます。

  • spring-boot-starter-actuator の依存関係をプロジェクトに追加します。
  • 必要なエンドポイント (/trace または /api/** など) をホワイトリストに登録して、ログに記録されるようにします。
  • オプションで、設定しますこれらのエンドポイントへのアクセスを保護するためのセキュリティ設定。

追加考慮事項

Heraku などの他のホスティング プロバイダーは、多くの場合、リクエストのログをサービスとして提供し、カスタム コードの必要性を排除します。

Spring Boot でのリクエストとレスポンスのログ記録用にアクチュエーターを構成するにはapplication:

    dependencies {
        implementation 'org.springframework.boot:spring-boot-starter-actuator'
    }

    # Security configuration (optional)
    security {
        httpBasic {}
        headers {
            hsts {
                enabled = true
                maxAge = 31536000L  # 1 year
            }
        }
    }

Output

/trace エンドポイントは、次のような目的の形式の JSON 応答を生成します。

{
  "timestamp": 1656211869816,
  "message": "Successful request",
  "path": "/api/users/1",
  "method": "GET",
  "status": 200,
  "timeTaken": 1397
}

の場合例外:

{
  "timestamp": 1656211972854,
  "message": "UserNotFoundException: User with id 9999 not found",
  "path": "/api/users/9999",
  "method": "GET",
  "status": 404,
  "timeTaken": 2063,
  "exception": "UserNotFoundException",
  "error": "User with id 9999 not found"
}

以上がSpring Boot REST API リクエスト、レスポンス、例外を一元的にログに記録するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。