로깅

Expedia Group 여행 플랫폼 SDK의 사용 및 오류 추적


Information

참고

Expedia Group은 Fraud Prevention Service Java SDK의 브랜딩을 변경했습니다. 이 페이지의 정보는 리브랜딩된 SDK를 참조합니다. 업데이트 지침


Java를 사용한 로깅

Java용 Expedia Group Fraud Prevention Service SDK는 클라이언트에 로깅 프레임워크를 적용하지 않고 대신 SLF4J 인터페이스를 통한 로깅을 지원합니다. SLF4J는 다양한 로깅 프레임워크에 대한 추상화를 제공하여 클라이언트가 프로젝트를 빌드할 때 원하는 구현에 연결할 수 있도록 합니다.

로깅 프레임워크가 연결되어 있지 않으면 SDK(SLF4J)는 기본적으로 작동하지 않으며 단일 경고 메시지와 함께 모든 로그 요청을 삭제합니다.

프로젝트 종속성 선언

특정 로깅 프레임워크를 프로젝트 종속성으로 선언하여 연결합니다. 설계상 SLF4J는 한 번에 하나의 프레임워크만 사용할 수 있으며 여러 프레임워크를 찾으면 경고 메시지를 내보냅니다.

Simple logger

<dependency>
    <groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
    <!-- version -->
</dependency>
dependencies {
  implementation group: 'org.slf4j', name: 'slf4j-simple'
}

Java util logging

<dependency> 
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-jdk14</artifactId>
  <!-- version -->
</dependency>
dependencies {
  implementation group: org.apache.logging.log4j, name: 'log4j-api'
}

Logback

<dependency> 
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <!-- version -->
</dependency>
dependencies {
  implementation group: 'ch.qos.logback', name: 'logback-classic'
}

로그 형식

로깅 프레임워크는 사용자 지정 로그 형식 및 레이아웃을 지원합니다. 로깅 이벤트 소스에 타임스탬프 및 로거 이름과 같은 세부 정보를 포함하면 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]

Python으로 로깅

Python용 Expedia Group 플랫폼 SDK는 Python의 표준 라이브러리에 있는 로깅 모듈을 사용하며 INFO를 로그의 기본 수준으로 사용합니다.

로거 이름 지정

expediagroup 로거는 SDK의 루트 로거로, SDK에서 사용되는 다른 모든 로거의 상위 로거이며 표준 형식 expediagroup.sdk.core.<package>.<module>을 따르므로 클라이언트가 원하는 대로 로깅을 구성할 수 있는 유연성을 제공합니다.

로깅 구성

기본적으로 로깅 구성은 SDK에서 처리합니다(어떠한 설정 절차를 진행하지 않아도 로그를 받게 됨). 기본 동작을 재정의하려는 경우 Python Org 및 Community에서 지정한 형식 및 표준에 따라 구성 파일을 설정해야 합니다.

file.cfg

[loggers]
keys=root,expediagroup

[logger_root]
handlers=

[logger_expediagroup]
qualname=expediagroup
level=INFO
handlers=exampleHandler

[handlers]
keys=exampleHandler

[formatters]
keys=exampleFormatter

[formatter_exampleFormatter]
format=[%(asctime)s] %(name)s %(levelname)s: %(message)s
datefmt=%Y-%m-%d %H:%M:%S

[handler_exampleHandler]
class=StreamHandler
level=INFO
formatter=exampleFormatter

구성 파일 사용

from logging.config import fileConfig


fileConfig("file.cfg")

로그 형식

로깅 프레임워크는 사용자 지정 로그 형식 및 레이아웃을 지원합니다. 로깅 이벤트 소스에 타임스탬프 및 로거 이름과 같은 세부 정보를 포함하면 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]

Node.js를 사용한 로깅

Node.js용 Expedia Group 플랫폼 SDK에는 기본 로거 ExpediaGroupLogger가 내장되어 있습니다. ExpediaGroupLogger는 기본값으로 활성화되어 있으며 info, warnerror의 세 가지 로깅 수준을 지원합니다. 애플리케이션의 로깅 수준은 ExpediaGroupLogger에서 setLoggingLevel를 호출하여 설정할 수 있습니다. 로그 메시지는 console에 출력되며, 필터링이 가능한 ExpediaGroupSDK 접두사로 주석이 지정됩니다.

SDK를 사용하면 기본 로거를 재정의할 수 있습니다. 이를 위해 setLogger에 사용할 수 있는 LoggerProvider를 SDK로 내보냅니다. 사용자 지정 로거는 info, warn, error의 세 가지 메서드를 실행해야 합니다.

로그 형식

로깅 프레임워크는 사용자 지정 로그 형식 및 레이아웃을 지원합니다. 로깅 이벤트 소스에 타임스탬프 및 로거 이름과 같은 세부 정보를 포함하면 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는 모든 API 호출에 대해 고유한 transaction ID를 생성하므로 요청을 처음부터 끝까지 추적하여 문제를 해결하는 데 유용합니다. 트랜잭션 ID는 요청 및 응답 헤더에 추가되며 DEBUG 수준에서 기록됩니다.

이 페이지가 도움이 되었나요?
이 콘텐츠를 어떻게 개선하면 좋을까요?
더 나은 Developer Hub를 만드는 데 도움을 주셔서 감사합니다!