main.cc 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // Copyright The OpenTelemetry Authors
  2. // SPDX-License-Identifier: Apache-2.0
  3. #include <memory>
  4. #include <utility>
  5. #include "opentelemetry/exporters/ostream/span_exporter_factory.h"
  6. #include "opentelemetry/sdk/trace/exporter.h"
  7. #include "opentelemetry/sdk/trace/processor.h"
  8. #include "opentelemetry/sdk/trace/provider.h"
  9. #include "opentelemetry/sdk/trace/simple_processor_factory.h"
  10. #include "opentelemetry/sdk/trace/tracer_provider.h"
  11. #include "opentelemetry/sdk/trace/tracer_provider_factory.h"
  12. #include "opentelemetry/trace/tracer_provider.h"
  13. #ifdef BAZEL_BUILD
  14. # include "examples/common/foo_library/foo_library.h"
  15. #else
  16. # include "foo_library/foo_library.h"
  17. #endif
  18. namespace trace_api = opentelemetry::trace;
  19. namespace trace_sdk = opentelemetry::sdk::trace;
  20. namespace trace_exporter = opentelemetry::exporter::trace;
  21. namespace
  22. {
  23. void InitTracer()
  24. {
  25. auto exporter = trace_exporter::OStreamSpanExporterFactory::Create();
  26. auto processor = trace_sdk::SimpleSpanProcessorFactory::Create(std::move(exporter));
  27. std::shared_ptr<opentelemetry::sdk::trace::TracerProvider> sdk_provider =
  28. trace_sdk::TracerProviderFactory::Create(std::move(processor));
  29. // Set the global trace provider
  30. const std::shared_ptr<opentelemetry::trace::TracerProvider> &api_provider = sdk_provider;
  31. trace_sdk::Provider::SetTracerProvider(api_provider);
  32. }
  33. void CleanupTracer()
  34. {
  35. std::shared_ptr<opentelemetry::trace::TracerProvider> noop;
  36. trace_sdk::Provider::SetTracerProvider(noop);
  37. }
  38. } // namespace
  39. int main(int /* argc */, char ** /* argv */)
  40. {
  41. // Removing this line will leave the default noop TracerProvider in place.
  42. InitTracer();
  43. foo_library();
  44. CleanupTracer();
  45. return 0;
  46. }