Logging in the Rapid SDK for Java

The Rapid SDK for Java does not impose a logging framework on clients and instead supports logging via the SLF4J interface. SLF4J provides an abstraction for various logging frameworks, allowing clients to plug in their desired implementation when building their projects.

Without a logging framework plugged in, the SDK (SLF4J) defaults to a no-operation, discarding all log requests with a single warning message:

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.

Declaring project dependencies

A client can plug in a particular logging framework by declaring it as a project dependency. By design, SLF4J can use only one framework at a time and it will emit a warning message if it finds multiple frameworks.

Simple logger

Java Util logging

Logback

Log4j2

Log format

Logging frameworks support custom log formatting and layouts and including details such as the timestamp and the logger name at the origin of the logging event helps troubleshoot the SDK. In addition, log messages are annotated with the prefix ExpediaGroupSDK against which they could be filtered out.

13:36:59.287 [DefaultDispatcher-worker-1] INFO  c.e.s.c.c.c.ConfigurationCollector MDC= - ExpediaSDK: Successfully loaded [endpoint] from [runtime configuration]

Traceability

The SDK generates a unique transaction ID for every API call, which is useful for troubleshooting issues by tracing requests end-to-end. The transactions IDs are added to the request and response headers, and they are logged at the DEBUG level.

Did you find this page helpful?
How can we improve this content?
Thank you for helping us improve Developer Hub!