main.cc 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. // Copyright The OpenTelemetry Authors
  2. // SPDX-License-Identifier: Apache-2.0
  3. #include <memory>
  4. #include <utility>
  5. #include "opentelemetry/exporters/ostream/log_record_exporter.h"
  6. #include "opentelemetry/exporters/ostream/span_exporter_factory.h"
  7. #include "opentelemetry/logs/logger_provider.h"
  8. #include "opentelemetry/sdk/logs/exporter.h"
  9. #include "opentelemetry/sdk/logs/logger_provider.h"
  10. #include "opentelemetry/sdk/logs/logger_provider_factory.h"
  11. #include "opentelemetry/sdk/logs/processor.h"
  12. #include "opentelemetry/sdk/logs/provider.h"
  13. #include "opentelemetry/sdk/logs/simple_log_record_processor_factory.h"
  14. #include "opentelemetry/sdk/trace/exporter.h"
  15. #include "opentelemetry/sdk/trace/processor.h"
  16. #include "opentelemetry/sdk/trace/provider.h"
  17. #include "opentelemetry/sdk/trace/simple_processor_factory.h"
  18. #include "opentelemetry/sdk/trace/tracer_provider.h"
  19. #include "opentelemetry/sdk/trace/tracer_provider_factory.h"
  20. #include "opentelemetry/trace/tracer_provider.h"
  21. #ifdef BAZEL_BUILD
  22. # include "examples/common/logs_foo_library/foo_library.h"
  23. #else
  24. # include "logs_foo_library/foo_library.h"
  25. #endif
  26. namespace logs_api = opentelemetry::logs;
  27. namespace logs_sdk = opentelemetry::sdk::logs;
  28. namespace logs_exporter = opentelemetry::exporter::logs;
  29. namespace trace_api = opentelemetry::trace;
  30. namespace trace_sdk = opentelemetry::sdk::trace;
  31. namespace trace_exporter = opentelemetry::exporter::trace;
  32. namespace
  33. {
  34. void InitTracer()
  35. {
  36. // Create ostream span exporter instance
  37. auto exporter = trace_exporter::OStreamSpanExporterFactory::Create();
  38. auto processor = trace_sdk::SimpleSpanProcessorFactory::Create(std::move(exporter));
  39. std::shared_ptr<opentelemetry::sdk::trace::TracerProvider> sdk_provider =
  40. trace_sdk::TracerProviderFactory::Create(std::move(processor));
  41. // Set the global trace provider
  42. const std::shared_ptr<trace_api::TracerProvider> &api_provider = sdk_provider;
  43. trace_sdk::Provider::SetTracerProvider(api_provider);
  44. }
  45. void CleanupTracer()
  46. {
  47. std::shared_ptr<trace_api::TracerProvider> noop;
  48. trace_sdk::Provider::SetTracerProvider(noop);
  49. }
  50. void InitLogger()
  51. {
  52. // Create ostream log exporter instance
  53. auto exporter =
  54. std::unique_ptr<logs_sdk::LogRecordExporter>(new logs_exporter::OStreamLogRecordExporter);
  55. auto processor = logs_sdk::SimpleLogRecordProcessorFactory::Create(std::move(exporter));
  56. std::shared_ptr<opentelemetry::sdk::logs::LoggerProvider> sdk_provider(
  57. logs_sdk::LoggerProviderFactory::Create(std::move(processor)));
  58. // Set the global logger provider
  59. const std::shared_ptr<logs_api::LoggerProvider> &api_provider = sdk_provider;
  60. logs_sdk::Provider::SetLoggerProvider(api_provider);
  61. }
  62. void CleanupLogger()
  63. {
  64. std::shared_ptr<logs_api::LoggerProvider> noop;
  65. logs_sdk::Provider::SetLoggerProvider(noop);
  66. }
  67. } // namespace
  68. int main(int /* argc */, char ** /* argv */)
  69. {
  70. InitTracer();
  71. InitLogger();
  72. foo_library();
  73. CleanupTracer();
  74. CleanupLogger();
  75. return 0;
  76. }