file_main.cc 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. // Copyright The OpenTelemetry Authors
  2. // SPDX-License-Identifier: Apache-2.0
  3. #include <memory>
  4. #include <string>
  5. #include <utility>
  6. #include "opentelemetry/exporters/otlp/otlp_file_client_options.h"
  7. #include "opentelemetry/exporters/otlp/otlp_file_exporter_factory.h"
  8. #include "opentelemetry/exporters/otlp/otlp_file_exporter_options.h"
  9. #include "opentelemetry/sdk/trace/exporter.h"
  10. #include "opentelemetry/sdk/trace/processor.h"
  11. #include "opentelemetry/sdk/trace/provider.h"
  12. #include "opentelemetry/sdk/trace/simple_processor_factory.h"
  13. #include "opentelemetry/sdk/trace/tracer_provider.h"
  14. #include "opentelemetry/sdk/trace/tracer_provider_factory.h"
  15. #include "opentelemetry/trace/tracer_provider.h"
  16. #ifdef BAZEL_BUILD
  17. # include "examples/common/foo_library/foo_library.h"
  18. #else
  19. # include "foo_library/foo_library.h"
  20. #endif
  21. namespace trace = opentelemetry::trace;
  22. namespace trace_sdk = opentelemetry::sdk::trace;
  23. namespace otlp = opentelemetry::exporter::otlp;
  24. namespace
  25. {
  26. opentelemetry::exporter::otlp::OtlpFileExporterOptions opts;
  27. std::shared_ptr<opentelemetry::sdk::trace::TracerProvider> provider;
  28. void InitTracer()
  29. {
  30. // Create OTLP exporter instance
  31. auto exporter = otlp::OtlpFileExporterFactory::Create(opts);
  32. auto processor = trace_sdk::SimpleSpanProcessorFactory::Create(std::move(exporter));
  33. provider = trace_sdk::TracerProviderFactory::Create(std::move(processor));
  34. // Set the global trace provider
  35. std::shared_ptr<opentelemetry::trace::TracerProvider> api_provider = provider;
  36. trace_sdk::Provider::SetTracerProvider(api_provider);
  37. }
  38. void CleanupTracer()
  39. {
  40. // We call ForceFlush to prevent to cancel running exportings, It's optional.
  41. if (provider)
  42. {
  43. provider->ForceFlush();
  44. }
  45. provider.reset();
  46. std::shared_ptr<opentelemetry::trace::TracerProvider> none;
  47. trace_sdk::Provider::SetTracerProvider(none);
  48. }
  49. } // namespace
  50. int main(int argc, char *argv[])
  51. {
  52. if (argc > 1)
  53. {
  54. opentelemetry::exporter::otlp::OtlpFileClientFileSystemOptions fs_backend;
  55. fs_backend.file_pattern = argv[1];
  56. opts.backend_options = fs_backend;
  57. }
  58. // Removing this line will leave the default noop TracerProvider in place.
  59. InitTracer();
  60. foo_library();
  61. CleanupTracer();
  62. return 0;
  63. }