]> git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/opentelemetry-cpp/examples/otlp/http_log_main.cc
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / examples / otlp / http_log_main.cc
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 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);
58 }
59 } // namespace
60
61 int main(int argc, char *argv[])
62 {
63 if (argc > 1)
64 {
65 opts.url = argv[1];
66 logger_opts.url = argv[1];
67 if (argc > 2)
68 {
69 std::string debug = argv[2];
70 opts.console_debug = debug != "" && debug != "0" && debug != "no";
71 }
72
73 if (argc > 3)
74 {
75 std::string binary_mode = argv[3];
76 if (binary_mode.size() >= 3 && binary_mode.substr(0, 3) == "bin")
77 {
78 opts.content_type = opentelemetry::exporter::otlp::HttpRequestContentType::kBinary;
79 logger_opts.content_type = opentelemetry::exporter::otlp::HttpRequestContentType::kBinary;
80 }
81 }
82 }
83 InitLogger();
84 InitTracer();
85 foo_library();
86 }
87 #else
88 int main()
89 {
90 return 0;
91 }
92 #endif