首頁  >  文章  >  Java  >  如何集中記錄 Spring Boot REST API 請求、回應和異常?

如何集中記錄 Spring Boot REST API 請求、回應和異常?

Barbara Streisand
Barbara Streisand原創
2024-11-23 13:48:16834瀏覽

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

在Spring Boot 中集中記錄帶有異常的請求和回應

開發REST API 時,捕獲所有請求和回應的全面日誌至關重要,包括輸入參數、類別方法和異常。這種集中式日誌記錄可以實現快速調試和審核。

最佳實踐方法

Spring Boot 為這項任務提供了一個有效且簡單的解決方案:Actuator 模組。 Actuator 提供了一個端點(/trace 或 /actuator/httptrace),預設記錄最後 100 個 HTTP 請求。

自訂

記錄每個請求並自訂端點根據您的特定需求,您可以:

  • 新增spring-boot- starter-actuator對您的專案的依賴關係。
  • 將所需端點(例如 /trace 或 /api/**)列入白名單,以確保它們被記錄。
  • (選用)設定安全設定以保護這些端點的存取端點。

其他注意事項

其他託管提供者(例如 Heroku)通常將請求日誌記錄作為服務提供,從而無需自訂程式碼。

示例

在Spring Boot 中配置Actuator 以進行請求和響應日誌記錄應用程序:

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

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

輸出

/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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn