from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import ConsoleSpanExporter, SimpleSpanProcessor

# トレースプロバイダの設定
provider = TracerProvider()
provider.add_span_processor(SimpleSpanProcessor(ConsoleSpanExporter()))
trace.set_tracer_provider(provider)

tracer = trace.get_tracer("my-service")

# スパンの作成と属性の設定
with tracer.start_as_current_span("process-order") as span:
    span.set_attribute("order.id", "ORD-12345")
    span.set_attribute("order.amount", 9800)
    
    # ネストしたスパン（子スパン）
    with tracer.start_as_current_span("validate-payment") as child:
        child.set_attribute("payment.method", "credit_card")
        child.set_attribute("payment.status", "approved")
    
    span.set_attribute("order.status", "confirmed")
    print("注文処理完了")