1+ // Copyright The OpenTelemetry Authors
2+ // SPDX-License-Identifier: Apache-2.0
3+
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"
13+
14+ # include < string>
15+
16+ # ifdef BAZEL_BUILD
17+ # include " examples/common/logs_foo_library/foo_library.h"
18+ # else
19+ # include " logs_foo_library/foo_library.h"
20+ # endif
21+
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;
28+
29+ namespace
30+ {
31+
32+ opentelemetry::exporter::otlp::OtlpHttpExporterOptions opts;
33+ void InitTracer ()
34+ {
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)));
39+ auto provider =
40+ nostd::shared_ptr<trace::TracerProvider>(new trace_sdk::TracerProvider (std::move (processor)));
41+ // Set the global trace provider
42+ trace::Provider::SetTracerProvider (provider);
43+ }
44+
45+ opentelemetry::exporter::otlp::OtlpHttpLogExporterOptions logger_opts;
46+ void InitLogger ()
47+ {
48+ logger_opts.console_debug = true ;
49+ // Create OTLP exporter instance
50+ auto exporter =
51+ std::unique_ptr<logs_sdk::LogExporter>(new otlp::OtlpHttpLogExporter (logger_opts));
52+ auto processor = std::shared_ptr<logs_sdk::LogProcessor>(
53+ new logs_sdk::SimpleLogProcessor (std::move (exporter)));
54+ auto sdkProvider = std::shared_ptr<logs_sdk::LoggerProvider>(new logs_sdk::LoggerProvider ());
55+ sdkProvider->SetProcessor (processor);
56+ auto apiProvider = nostd::shared_ptr<logs::LoggerProvider>(sdkProvider);
57+ auto provider = nostd::shared_ptr<logs::LoggerProvider>(apiProvider);
58+ opentelemetry::logs::Provider::SetLoggerProvider (provider);
59+ }
60+ } // namespace
61+
62+ int main (int argc, char *argv[])
63+ {
64+ if (argc > 1 )
65+ {
66+ opts.url = argv[1 ];
67+ logger_opts.url = argv[1 ];
68+ if (argc > 2 )
69+ {
70+ std::string debug = argv[2 ];
71+ opts.console_debug = debug != " " && debug != " 0" && debug != " no" ;
72+ }
73+
74+ if (argc > 3 )
75+ {
76+ std::string binary_mode = argv[3 ];
77+ if (binary_mode.size () >= 3 && binary_mode.substr (0 , 3 ) == " bin" )
78+ {
79+ opts.content_type = opentelemetry::exporter::otlp::HttpRequestContentType::kBinary ;
80+ logger_opts.content_type = opentelemetry::exporter::otlp::HttpRequestContentType::kBinary ;
81+ }
82+ }
83+ }
84+ InitLogger ();
85+ InitTracer ();
86+ foo_library ();
87+ }
88+ #else
89+ int main ()
90+ {
91+ return 0 ;
92+ }
93+ #endif
0 commit comments