Skip to content

Commit d6f99b0

Browse files
committed
feat: set spanid and traceid upon logging
1 parent 2184b83 commit d6f99b0

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

instrumentation/spdlog/src/sink.cc

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@
99
#include <opentelemetry/trace/semantic_conventions.h>
1010
#include <opentelemetry/version.h>
1111

12+
#include <opentelemetry/context/runtime_context.h>
13+
#include <opentelemetry/trace/context.h>
14+
#include <opentelemetry/trace/span_id.h>
15+
#include <opentelemetry/trace/trace_id.h>
16+
1217
namespace spdlog
1318
{
1419
namespace sinks
@@ -36,6 +41,25 @@ void OpenTelemetrySink<Mutex>::sink_it_(const spdlog::details::log_msg &msg)
3641
log_record->SetAttribute(kCodeLineno, msg.source.line);
3742
}
3843
log_record->SetAttribute(kThreadId, msg.thread_id);
44+
45+
auto current_ctx = opentelemetry::context::RuntimeContext::GetCurrent();
46+
auto span = opentelemetry::trace::GetSpan(current_ctx);
47+
if (span && span->GetContext().IsValid()) {
48+
auto span_context = span->GetContext();
49+
50+
auto trace_id = span_context.trace_id();
51+
char trace_id_buf[opentelemetry::trace::TraceId::kSize * 2];
52+
trace_id.ToLowerBase16(trace_id_buf);
53+
log_record->SetTraceId(trace_id);
54+
55+
auto span_id = span_context.span_id();
56+
char span_id_buf[opentelemetry::trace::SpanId::kSize * 2];
57+
span_id.ToLowerBase16(span_id_buf);
58+
log_record->SetSpanId(span_id);
59+
60+
log_record->SetTraceFlags(span_context.trace_flags());
61+
}
62+
3963
logger->EmitLogRecord(std::move(log_record));
4064
}
4165
}

0 commit comments

Comments
 (0)