Java용 Rapid SDK의 로깅
Java용 Rapid SDK는 클라이언트에 로깅 프레임워크를 적용하지 않고 대신 SLF4J 인터페이스를 통한 로깅을 지원합니다. SLF4J는 다양한 로깅 프레임워크에 대한 추상화를 제공하여 클라이언트가 프로젝트를 빌드할 때 원하는 구현에 연결할 수 있도록 합니다.
로깅 프레임워크가 연결되어 있지 않으면 SDK(SLF4J)는 기본적으로 작동하지 않으며 단일 경고 메시지와 함께 모든 로그 요청을 삭제합니다.
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".\
SLF4J: Defaulting to no-operation (NOP) logger implementation\
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
프로젝트 종속성 선언
클라이언트는 특정 로깅 프레임워크를 프로젝트 종속성으로 선언하여 연결할 수 있습니다. 설계상 SLF4J는 한 번에 하나의 프레임워크만 사용할 수 있으며 여러 프레임워크를 찾으면 경고 메시지를 내보냅니다.
Simple logger
Java Util Logging
Logback
Log4j2
로그 형식
로깅 프레임워크는 사용자 지정 로그 형식 및 레이아웃을 지원합니다. 로깅 이벤트 소스에 타임스탬프 및 로거 이름과 같은 세부 정보를 포함하면 SDK 관련 문제를 해결하는 데 도움이 됩니다. 또한, 로그 메시지는 필터링이 가능한 ExpediaGroupSDK
접두사로 주석이 지정됩니다.
13:36:59.287 [DefaultDispatcher-worker-1] INFO c.e.s.c.c.c.ConfigurationCollector MDC= - ExpediaSDK: Successfully loaded [endpoint] from [runtime configuration]
로그 수준
SDK에서 발생하고 수신한 요청 및 응답 데이터를 추적하려면 로그 수준을 INFO로 설정하여 헤더 및 본문 콘텐츠를 포함하여 기록할 수 있지만, 이 경우 상당한 양의 로깅 데이터가 생성될 수 있습니다. 로그 수준을 WARN 또는 ERROR로 설정하면 예외 및 오류만 기록되지만, 예기치 않은 동작이 발생할 경우 Expedia Group과 공유할 수 있는 트랜잭션 ID는 여전히 포함됩니다.
문제를 해결하는 경우 로그 수준을 DEBUG로 설정하여 요청 및 응답에 대한 자세한 정보를 얻을 수 있으며, DEBUG 수준의 로그에는 OkHttp 클라이언트 이벤트 및 트랜잭션 ID에 대한 보다 자세한 로깅이 포함됩니다.
DEBUG 수준의 로그 메시지 예시:
17:40:08.490 [DefaultDispatcher-worker-3] DEBUG com.expediagroup.sdk.core.client.OkHttpEventListener - ExpediaSDK: Call start for transaction-id: [aff4c00d-6f79-4690-8f60-dd1aaccbfaee]
17:40:08.496 [OkHttp https://test.ean.com/...] DEBUG com.expediagroup.sdk.core.client.OkHttpEventListener - ExpediaSDK: Connect start for transaction-id: [aff4c00d-6f79-4690-8f60-dd1aaccbfaee]
17:40:08.508 [OkHttp https://test.ean.com/...] DEBUG com.expediagroup.sdk.core.client.OkHttpEventListener - ExpediaSDK: Connect end for transaction-id: [aff4c00d-6f79-4690-8f60-dd1aaccbfaee]
17:40:08.508 [OkHttp https://test.ean.com/...] DEBUG com.expediagroup.sdk.core.client.OkHttpEventListener - ExpediaSDK: Connection acquired for transaction-id: [aff4c00d-6f79-4690-8f60-dd1aaccbfaee]
17:40:08.510 [OkHttp https://test.ean.com/...] DEBUG com.expediagroup.sdk.core.client.OkHttpEventListener - ExpediaSDK: Sending request headers start for transaction-id: [aff4c00d-6f79-4690-8f60-dd1aaccbfaee]
17:40:08.510 [OkHttp https://test.ean.com/...] DEBUG com.expediagroup.sdk.core.client.OkHttpEventListener - ExpediaSDK: Sending request headers end for transaction-id: [aff4c00d-6f79-4690-8f60-dd1aaccbfaee]
추적성
SDK는 모든 API 호출에 대해 고유한 transaction ID
를 생성하므로 요청을 처음부터 끝까지 추적하여 문제를 해결하는 데 유용합니다. 트랜잭션 ID는 요청 및 응답 헤더에 추가되며 예외가 발생하는 경우 오류 메시지에 기록됩니다.