Logging and Tracing

The imednet.core.client.Client configures JSON formatted logging when it is instantiated. You can adjust the log level with the log_level parameter or call imednet.utils.json_logging.configure_json_logging() in your application to apply the same format globally.

If opentelemetry is installed, the client can record spans around each HTTP request. Installing opentelemetry-instrumentation-httpx will automatically instrument the HTTPX requests used by the SDK. You may also pass your own tracer to the client.

Example configuration:

from opentelemetry import trace
from opentelemetry.instrumentation.httpx import HTTPXClientInstrumentor
from imednet.core.client import Client

HTTPXClientInstrumentor().instrument()
tracer = trace.get_tracer(__name__)
client = Client(api_key="A", security_key="B", tracer=tracer)

Request Lifecycle

The client logs each request and, when a tracer is supplied, surrounds the HTTP call with a span.

sequenceDiagram participant App participant Client participant HTTPX App->>Client: call endpoint Client->>Client: start span (optional) Client->>HTTPX: send request HTTPX-->>Client: response Client->>Client: log JSON Client->>Client: end span (optional) Client-->>App: return result