1 // Copyright The OpenTelemetry Authors
2 // SPDX-License-Identifier: Apache-2.0
4 #ifdef ENABLE_LOGS_PREVIEW
5 # include "opentelemetry/exporters/otlp/otlp_http_exporter.h"
6 # include "opentelemetry/exporters/otlp/otlp_http_log_exporter.h"
7 # include "opentelemetry/logs/provider.h"
8 # include "opentelemetry/sdk/logs/logger_provider.h"
9 # include "opentelemetry/sdk/logs/simple_log_processor.h"
10 # include "opentelemetry/sdk/trace/simple_processor.h"
11 # include "opentelemetry/sdk/trace/tracer_provider.h"
12 # include "opentelemetry/trace/provider.h"
17 # include "examples/common/logs_foo_library/foo_library.h"
19 # include "logs_foo_library/foo_library.h"
22 namespace trace
= opentelemetry::trace
;
23 namespace nostd
= opentelemetry::nostd
;
24 namespace otlp
= opentelemetry::exporter::otlp
;
25 namespace logs_sdk
= opentelemetry::sdk::logs
;
26 namespace logs
= opentelemetry::logs
;
27 namespace trace_sdk
= opentelemetry::sdk::trace
;
32 opentelemetry::exporter::otlp::OtlpHttpExporterOptions opts
;
35 // Create OTLP exporter instance
36 auto exporter
= std::unique_ptr
<trace_sdk::SpanExporter
>(new otlp::OtlpHttpExporter(opts
));
37 auto processor
= std::unique_ptr
<trace_sdk::SpanProcessor
>(
38 new trace_sdk::SimpleSpanProcessor(std::move(exporter
)));
40 nostd::shared_ptr
<trace::TracerProvider
>(new trace_sdk::TracerProvider(std::move(processor
)));
41 // Set the global trace provider
42 trace::Provider::SetTracerProvider(provider
);
45 opentelemetry::exporter::otlp::OtlpHttpLogExporterOptions logger_opts
;
48 logger_opts
.console_debug
= true;
49 // Create OTLP exporter instance
51 std::unique_ptr
<logs_sdk::LogExporter
>(new otlp::OtlpHttpLogExporter(logger_opts
));
52 auto sdkProvider
= std::shared_ptr
<logs_sdk::LoggerProvider
>(
53 new logs_sdk::LoggerProvider(std::unique_ptr
<logs_sdk::LogProcessor
>(
54 new logs_sdk::SimpleLogProcessor(std::move(exporter
)))));
55 auto apiProvider
= nostd::shared_ptr
<logs::LoggerProvider
>(sdkProvider
);
56 auto provider
= nostd::shared_ptr
<logs::LoggerProvider
>(apiProvider
);
57 opentelemetry::logs::Provider::SetLoggerProvider(provider
);
61 int main(int argc
, char *argv
[])
66 logger_opts
.url
= argv
[1];
69 std::string debug
= argv
[2];
70 opts
.console_debug
= debug
!= "" && debug
!= "0" && debug
!= "no";
75 std::string binary_mode
= argv
[3];
76 if (binary_mode
.size() >= 3 && binary_mode
.substr(0, 3) == "bin")
78 opts
.content_type
= opentelemetry::exporter::otlp::HttpRequestContentType::kBinary
;
79 logger_opts
.content_type
= opentelemetry::exporter::otlp::HttpRequestContentType::kBinary
;