>  기사  >  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는 기본적으로 마지막 100개의 HTTP 요청을 기록하는 엔드포인트(/trace 또는 /actuator/httptrace)를 제공합니다.

사용자 정의

모든 요청을 기록하고 엔드포인트를 맞춤화하려면 특정 요구 사항에 따라 다음을 수행할 수 있습니다.

  • 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으로 문의하세요.