]> git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/opentelemetry-cpp/exporters/otlp/src/otlp_log_recordable.cc
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / exporters / otlp / src / otlp_log_recordable.cc
1 // Copyright The OpenTelemetry Authors
2 // SPDX-License-Identifier: Apache-2.0
3
4 #ifdef ENABLE_LOGS_PREVIEW
5
6 # include "opentelemetry/common/macros.h"
7
8 # include "opentelemetry/exporters/otlp/otlp_log_recordable.h"
9
10 # include "opentelemetry/exporters/otlp/otlp_recordable_utils.h"
11
12 namespace nostd = opentelemetry::nostd;
13
14 OPENTELEMETRY_BEGIN_NAMESPACE
15 namespace exporter
16 {
17 namespace otlp
18 {
19
20 proto::resource::v1::Resource OtlpLogRecordable::ProtoResource() const noexcept
21 {
22 proto::resource::v1::Resource proto;
23 if (nullptr == resource_)
24 {
25 OtlpRecordableUtils::PopulateAttribute(&proto, sdk::resource::Resource::GetDefault());
26 }
27 else
28 {
29 OtlpRecordableUtils::PopulateAttribute(&proto, *resource_);
30 }
31
32 return proto;
33 }
34
35 void OtlpLogRecordable::SetTimestamp(opentelemetry::common::SystemTimestamp timestamp) noexcept
36 {
37 log_record_.set_time_unix_nano(timestamp.time_since_epoch().count());
38 }
39
40 void OtlpLogRecordable::SetSeverity(opentelemetry::logs::Severity severity) noexcept
41 {
42 switch (severity)
43 {
44 case opentelemetry::logs::Severity::kTrace: {
45 log_record_.set_severity_text("TRACE");
46 log_record_.set_severity_number(proto::logs::v1::SEVERITY_NUMBER_TRACE);
47 break;
48 }
49 case opentelemetry::logs::Severity::kTrace2: {
50 log_record_.set_severity_text("TRACE2");
51 log_record_.set_severity_number(proto::logs::v1::SEVERITY_NUMBER_TRACE2);
52 break;
53 }
54 case opentelemetry::logs::Severity::kTrace3: {
55 log_record_.set_severity_text("TRACE3");
56 log_record_.set_severity_number(proto::logs::v1::SEVERITY_NUMBER_TRACE3);
57 break;
58 }
59 case opentelemetry::logs::Severity::kTrace4: {
60 log_record_.set_severity_text("TRACE4");
61 log_record_.set_severity_number(proto::logs::v1::SEVERITY_NUMBER_TRACE4);
62 break;
63 }
64 case opentelemetry::logs::Severity::kDebug: {
65 log_record_.set_severity_text("DEBUG");
66 log_record_.set_severity_number(proto::logs::v1::SEVERITY_NUMBER_DEBUG);
67 break;
68 }
69 case opentelemetry::logs::Severity::kDebug2: {
70 log_record_.set_severity_text("DEBUG2");
71 log_record_.set_severity_number(proto::logs::v1::SEVERITY_NUMBER_DEBUG2);
72 break;
73 }
74 case opentelemetry::logs::Severity::kDebug3: {
75 log_record_.set_severity_text("DEBUG3");
76 log_record_.set_severity_number(proto::logs::v1::SEVERITY_NUMBER_DEBUG3);
77 break;
78 }
79 case opentelemetry::logs::Severity::kDebug4: {
80 log_record_.set_severity_text("DEBUG4");
81 log_record_.set_severity_number(proto::logs::v1::SEVERITY_NUMBER_DEBUG4);
82 break;
83 }
84 case opentelemetry::logs::Severity::kInfo: {
85 log_record_.set_severity_text("INFO");
86 log_record_.set_severity_number(proto::logs::v1::SEVERITY_NUMBER_INFO);
87 break;
88 }
89 case opentelemetry::logs::Severity::kInfo2: {
90 log_record_.set_severity_text("INFO2");
91 log_record_.set_severity_number(proto::logs::v1::SEVERITY_NUMBER_INFO2);
92 break;
93 }
94 case opentelemetry::logs::Severity::kInfo3: {
95 log_record_.set_severity_text("INFO3");
96 log_record_.set_severity_number(proto::logs::v1::SEVERITY_NUMBER_INFO3);
97 break;
98 }
99 case opentelemetry::logs::Severity::kInfo4: {
100 log_record_.set_severity_text("INFO4");
101 log_record_.set_severity_number(proto::logs::v1::SEVERITY_NUMBER_INFO4);
102 break;
103 }
104 case opentelemetry::logs::Severity::kWarn: {
105 log_record_.set_severity_text("WARN");
106 log_record_.set_severity_number(proto::logs::v1::SEVERITY_NUMBER_WARN);
107 break;
108 }
109 case opentelemetry::logs::Severity::kWarn2: {
110 log_record_.set_severity_text("WARN2");
111 log_record_.set_severity_number(proto::logs::v1::SEVERITY_NUMBER_WARN2);
112 break;
113 }
114 case opentelemetry::logs::Severity::kWarn3: {
115 log_record_.set_severity_text("WARN3");
116 log_record_.set_severity_number(proto::logs::v1::SEVERITY_NUMBER_WARN3);
117 break;
118 }
119 case opentelemetry::logs::Severity::kWarn4: {
120 log_record_.set_severity_text("WARN4");
121 log_record_.set_severity_number(proto::logs::v1::SEVERITY_NUMBER_WARN4);
122 break;
123 }
124 case opentelemetry::logs::Severity::kError: {
125 log_record_.set_severity_text("ERROR");
126 log_record_.set_severity_number(proto::logs::v1::SEVERITY_NUMBER_ERROR);
127 break;
128 }
129 case opentelemetry::logs::Severity::kError2: {
130 log_record_.set_severity_text("ERROR2");
131 log_record_.set_severity_number(proto::logs::v1::SEVERITY_NUMBER_ERROR2);
132 break;
133 }
134 case opentelemetry::logs::Severity::kError3: {
135 log_record_.set_severity_text("ERROR3");
136 log_record_.set_severity_number(proto::logs::v1::SEVERITY_NUMBER_ERROR3);
137 break;
138 }
139 case opentelemetry::logs::Severity::kError4: {
140 log_record_.set_severity_text("ERROR4");
141 log_record_.set_severity_number(proto::logs::v1::SEVERITY_NUMBER_ERROR4);
142 break;
143 }
144 case opentelemetry::logs::Severity::kFatal: {
145 log_record_.set_severity_text("FATAL");
146 log_record_.set_severity_number(proto::logs::v1::SEVERITY_NUMBER_FATAL);
147 break;
148 }
149 case opentelemetry::logs::Severity::kFatal2: {
150 log_record_.set_severity_text("FATAL2");
151 log_record_.set_severity_number(proto::logs::v1::SEVERITY_NUMBER_FATAL2);
152 break;
153 }
154 case opentelemetry::logs::Severity::kFatal3: {
155 log_record_.set_severity_text("FATAL3");
156 log_record_.set_severity_number(proto::logs::v1::SEVERITY_NUMBER_FATAL3);
157 break;
158 }
159 case opentelemetry::logs::Severity::kFatal4: {
160 log_record_.set_severity_text("FATAL4");
161 log_record_.set_severity_number(proto::logs::v1::SEVERITY_NUMBER_FATAL4);
162 break;
163 }
164 default: {
165 log_record_.set_severity_text("INVALID");
166 log_record_.set_severity_number(proto::logs::v1::SEVERITY_NUMBER_UNSPECIFIED);
167 break;
168 }
169 }
170 }
171
172 void OtlpLogRecordable::SetBody(nostd::string_view message) noexcept
173 {
174 log_record_.mutable_body()->set_string_value(message.data(), message.size());
175 }
176
177 void OtlpLogRecordable::SetResource(const opentelemetry::sdk::resource::Resource &resource) noexcept
178 {
179 resource_ = &resource;
180 }
181
182 const opentelemetry::sdk::resource::Resource &OtlpLogRecordable::GetResource() const noexcept
183 {
184 OPENTELEMETRY_LIKELY_IF(nullptr != resource_) { return *resource_; }
185
186 return opentelemetry::sdk::resource::Resource::GetDefault();
187 }
188
189 void OtlpLogRecordable::SetAttribute(nostd::string_view key,
190 const opentelemetry::common::AttributeValue &value) noexcept
191 {
192 OtlpRecordableUtils::PopulateAttribute(log_record_.add_attributes(), key, value);
193 }
194
195 void OtlpLogRecordable::SetTraceId(opentelemetry::trace::TraceId trace_id) noexcept
196 {
197 log_record_.set_trace_id(reinterpret_cast<const char *>(trace_id.Id().data()),
198 trace::TraceId::kSize);
199 }
200
201 void OtlpLogRecordable::SetSpanId(opentelemetry::trace::SpanId span_id) noexcept
202 {
203 log_record_.set_span_id(reinterpret_cast<const char *>(span_id.Id().data()),
204 trace::SpanId::kSize);
205 }
206
207 void OtlpLogRecordable::SetTraceFlags(opentelemetry::trace::TraceFlags trace_flags) noexcept
208 {
209 log_record_.set_flags(trace_flags.flags());
210 }
211
212 void OtlpLogRecordable::SetInstrumentationLibrary(
213 const opentelemetry::sdk::instrumentationlibrary::InstrumentationLibrary
214 &instrumentation_library) noexcept
215 {
216 instrumentation_library_ = &instrumentation_library;
217 }
218
219 const opentelemetry::sdk::instrumentationlibrary::InstrumentationLibrary &
220 OtlpLogRecordable::GetInstrumentationLibrary() const noexcept
221 {
222 OPENTELEMETRY_LIKELY_IF(nullptr != instrumentation_library_) { return *instrumentation_library_; }
223
224 static opentelemetry::nostd::unique_ptr<
225 opentelemetry::sdk::instrumentationlibrary::InstrumentationLibrary>
226 default_instrumentation =
227 opentelemetry::sdk::instrumentationlibrary::InstrumentationLibrary::Create(
228 "default", "1.0.0", "https://opentelemetry.io/schemas/1.11.0");
229 return *default_instrumentation;
230 }
231 } // namespace otlp
232 } // namespace exporter
233 OPENTELEMETRY_END_NAMESPACE
234
235 #endif