// Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 #include #include #include "opentelemetry/exporters/ostream/log_record_exporter.h" #include "opentelemetry/exporters/ostream/span_exporter_factory.h" #include "opentelemetry/logs/logger_provider.h" #include "opentelemetry/sdk/logs/exporter.h" #include "opentelemetry/sdk/logs/logger_provider.h" #include "opentelemetry/sdk/logs/logger_provider_factory.h" #include "opentelemetry/sdk/logs/processor.h" #include "opentelemetry/sdk/logs/provider.h" #include "opentelemetry/sdk/logs/simple_log_record_processor_factory.h" #include "opentelemetry/sdk/trace/exporter.h" #include "opentelemetry/sdk/trace/processor.h" #include "opentelemetry/sdk/trace/provider.h" #include "opentelemetry/sdk/trace/simple_processor_factory.h" #include "opentelemetry/sdk/trace/tracer_provider.h" #include "opentelemetry/sdk/trace/tracer_provider_factory.h" #include "opentelemetry/trace/tracer_provider.h" #ifdef BAZEL_BUILD # include "examples/common/logs_foo_library/foo_library.h" #else # include "logs_foo_library/foo_library.h" #endif namespace logs_api = opentelemetry::logs; namespace logs_sdk = opentelemetry::sdk::logs; namespace logs_exporter = opentelemetry::exporter::logs; namespace trace_api = opentelemetry::trace; namespace trace_sdk = opentelemetry::sdk::trace; namespace trace_exporter = opentelemetry::exporter::trace; namespace { void InitTracer() { // Create ostream span exporter instance auto exporter = trace_exporter::OStreamSpanExporterFactory::Create(); auto processor = trace_sdk::SimpleSpanProcessorFactory::Create(std::move(exporter)); std::shared_ptr sdk_provider = trace_sdk::TracerProviderFactory::Create(std::move(processor)); // Set the global trace provider const std::shared_ptr &api_provider = sdk_provider; trace_sdk::Provider::SetTracerProvider(api_provider); } void CleanupTracer() { std::shared_ptr noop; trace_sdk::Provider::SetTracerProvider(noop); } void InitLogger() { // Create ostream log exporter instance auto exporter = std::unique_ptr(new logs_exporter::OStreamLogRecordExporter); auto processor = logs_sdk::SimpleLogRecordProcessorFactory::Create(std::move(exporter)); std::shared_ptr sdk_provider( logs_sdk::LoggerProviderFactory::Create(std::move(processor))); // Set the global logger provider const std::shared_ptr &api_provider = sdk_provider; logs_sdk::Provider::SetLoggerProvider(api_provider); } void CleanupLogger() { std::shared_ptr noop; logs_sdk::Provider::SetLoggerProvider(noop); } } // namespace int main(int /* argc */, char ** /* argv */) { InitTracer(); InitLogger(); foo_library(); CleanupTracer(); CleanupLogger(); return 0; }