1 // Copyright The OpenTelemetry Authors
2 // SPDX-License-Identifier: Apache-2.0
4 #ifdef ENABLE_LOGS_PREVIEW
6 # include "opentelemetry/common/macros.h"
8 # include "opentelemetry/exporters/otlp/otlp_log_recordable.h"
10 # include "opentelemetry/exporters/otlp/otlp_recordable_utils.h"
12 namespace nostd
= opentelemetry::nostd
;
14 OPENTELEMETRY_BEGIN_NAMESPACE
20 proto::resource::v1::Resource
OtlpLogRecordable::ProtoResource() const noexcept
22 proto::resource::v1::Resource proto
;
23 if (nullptr == resource_
)
25 OtlpRecordableUtils::PopulateAttribute(&proto
, sdk::resource::Resource::GetDefault());
29 OtlpRecordableUtils::PopulateAttribute(&proto
, *resource_
);
35 void OtlpLogRecordable::SetTimestamp(opentelemetry::common::SystemTimestamp timestamp
) noexcept
37 log_record_
.set_time_unix_nano(timestamp
.time_since_epoch().count());
40 void OtlpLogRecordable::SetSeverity(opentelemetry::logs::Severity severity
) noexcept
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
165 log_record_
.set_severity_text("INVALID");
166 log_record_
.set_severity_number(proto::logs::v1::SEVERITY_NUMBER_UNSPECIFIED
);
172 void OtlpLogRecordable::SetBody(nostd::string_view message
) noexcept
174 log_record_
.mutable_body()->set_string_value(message
.data(), message
.size());
177 void OtlpLogRecordable::SetResource(const opentelemetry::sdk::resource::Resource
&resource
) noexcept
179 resource_
= &resource
;
182 const opentelemetry::sdk::resource::Resource
&OtlpLogRecordable::GetResource() const noexcept
184 OPENTELEMETRY_LIKELY_IF(nullptr != resource_
) { return *resource_
; }
186 return opentelemetry::sdk::resource::Resource::GetDefault();
189 void OtlpLogRecordable::SetAttribute(nostd::string_view key
,
190 const opentelemetry::common::AttributeValue
&value
) noexcept
192 OtlpRecordableUtils::PopulateAttribute(log_record_
.add_attributes(), key
, value
);
195 void OtlpLogRecordable::SetTraceId(opentelemetry::trace::TraceId trace_id
) noexcept
197 log_record_
.set_trace_id(reinterpret_cast<const char *>(trace_id
.Id().data()),
198 trace::TraceId::kSize
);
201 void OtlpLogRecordable::SetSpanId(opentelemetry::trace::SpanId span_id
) noexcept
203 log_record_
.set_span_id(reinterpret_cast<const char *>(span_id
.Id().data()),
204 trace::SpanId::kSize
);
207 void OtlpLogRecordable::SetTraceFlags(opentelemetry::trace::TraceFlags trace_flags
) noexcept
209 log_record_
.set_flags(trace_flags
.flags());
212 void OtlpLogRecordable::SetInstrumentationLibrary(
213 const opentelemetry::sdk::instrumentationlibrary::InstrumentationLibrary
214 &instrumentation_library
) noexcept
216 instrumentation_library_
= &instrumentation_library
;
219 const opentelemetry::sdk::instrumentationlibrary::InstrumentationLibrary
&
220 OtlpLogRecordable::GetInstrumentationLibrary() const noexcept
222 OPENTELEMETRY_LIKELY_IF(nullptr != instrumentation_library_
) { return *instrumentation_library_
; }
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
;
232 } // namespace exporter
233 OPENTELEMETRY_END_NAMESPACE