#pragma once #include "opentelemetry/exporters/ostream/span_exporter.h" #include "opentelemetry/sdk/trace/simple_processor.h" #include "opentelemetry/sdk/trace/tracer_provider.h" #include "opentelemetry/trace/provider.h" #include namespace { void initTracer() { auto exporter = std::unique_ptr( new opentelemetry::exporter::trace::OStreamSpanExporter); auto processor = std::shared_ptr( new sdktrace::SimpleSpanProcessor(std::move(exporter))); auto provider = nostd::shared_ptr( new sdktrace::TracerProvider(processor, opentelemetry::sdk::resource::Resource::Create({}), std::make_shared())); // Set the global trace provider opentelemetry::trace::Provider::SetTracerProvider(provider); } nostd::shared_ptr get_tracer(std::string tracer_name) { auto provider = opentelemetry::trace::Provider::GetTracerProvider(); return provider->GetTracer(tracer_name); } }