Tracing from Python
To send traces from Python to Seq use the OpenTelemetry JavaScript SDK and its OTLP exporter. See the OpenTelemetry documentation for more details.
OpenTelemetry logging for Python does not support structured logging, so it is best to stick with using seqlog for logging.
Installing the OpenTelemetry Python SDK
Install the SDK packages:
pip install opentelemetry-api pip install opentelemetry-sdk pip install opentelemetry-exporter-otlp Configure Tracing:
from opentelemetry import trace from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import BatchSpanProcessor from opentelemetry.sdk.resources import SERVICE_NAME, Resource # Service name is required for most backends resource = Resource(attributes={ SERVICE_NAME: "my-service" }) traceProvider = TracerProvider(resource=resource) processor = BatchSpanProcessor(OTLPSpanExporter(endpoint="http://localhost:5341/ingest/otlp/v1/traces")) traceProvider.add_span_processor(processor) trace.set_tracer_provider(traceProvider) tracer = trace.get_tracer("my-tracer") Using the OpenTelemetry Python SDK
Use the start_as_current_span method to begin new spans.
with tracer.start_as_current_span("this is a span") as span: logger.warning("The weather forecast is %s", "Overcast, 24°C") span.set_attribute("parent-attribute", 5) with tracer.start_as_current_span("child span") as cspan: cspan.set_attribute("child-attribute", 42)