1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-09-11 08:50:45 +03:00
Files
mariadb-columnstore-engine/cmapi/tracing/traceparent_backend.py

46 lines
1.6 KiB
Python

import logging
import time
from typing import Any, Dict, Optional
from tracing.tracer import TracerBackend, TraceSpan
from tracing.utils import swallow_exceptions
logger = logging.getLogger("tracer")
json_logger = logging.getLogger("json_trace")
class TraceparentBackend(TracerBackend):
"""Default backend that logs span lifecycle and mirrors events/status."""
@swallow_exceptions
def on_span_start(self, span: TraceSpan) -> None:
logger.info(
"span_begin name='%s' kind=%s tid=%s sid=%s%s",
span.name, span.kind, span.trace_id, span.span_id,
f' psid={span.parent_span_id}' if span.parent_span_id else '',
)
json_logger.info("span_begin", extra=span.to_flat_dict())
@swallow_exceptions
def on_span_end(self, span: TraceSpan, exc: Optional[BaseException]) -> None:
duration_ms = (time.time_ns() - span.start_ns) / 1_000_000
logger.info(
"span_end name='%s' kind=%s tid=%s sid=%s%s duration_ms=%.3f",
span.name, span.kind, span.trace_id, span.span_id,
f' psid={span.parent_span_id}' if span.parent_span_id else '',
duration_ms,
)
json_logger.info("span_end", extra=span.to_flat_dict())
@swallow_exceptions
def on_span_event(self, span: TraceSpan, name: str, attrs: Dict[str, Any]) -> None:
logger.info(
"span_event name='%s' tid=%s sid=%s%s attrs=%s",
name, span.trace_id, span.span_id,
f' psid={span.parent_span_id}' if span.parent_span_id else '',
attrs,
)
json_logger.info("span_event", extra=span.to_flat_dict())