首页  >  文章  >  Java  >  如何集中记录 Spring Boot REST API 请求、响应和异常?

如何集中记录 Spring Boot REST API 请求、响应和异常?

Barbara Streisand
Barbara Streisand原创
2024-11-23 13:48:16855浏览

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