userver: userver/tracing/tracer.hpp Source File
Loading...
Searching...
No Matches
tracer.hpp
1#pragma once
2
3#include <memory>
4#include <unordered_set>
5
6#include <userver/tracing/span.hpp>
7#include <userver/tracing/tracer_fwd.hpp>
8
9USERVER_NAMESPACE_BEGIN
10
11namespace logging::impl {
12class TagWriter;
13} // namespace logging::impl
14
15/// Opentracing support
16namespace tracing {
17
18struct NoLogSpans;
19
21 public:
22 static void SetNoLogSpans(NoLogSpans&& spans);
23 static bool IsNoLogSpan(const std::string& name);
24
25 static void SetTracer(TracerPtr tracer);
26
27 static TracerPtr GetTracer();
28
29 const std::string& GetServiceName() const;
30
31 Span CreateSpanWithoutParent(std::string name);
32
33 Span CreateSpan(std::string name, const Span& parent,
34 ReferenceType reference_type);
35
36 // Log tag-private information like trace id, span id, etc.
37 virtual void LogSpanContextTo(const Span::Impl& span,
38 logging::impl::TagWriter writer) const = 0;
39
40 protected:
41 explicit Tracer(std::string_view service_name)
42 : service_name_(service_name) {}
43
44 virtual ~Tracer();
45
46 private:
47 const std::string service_name_;
48};
49
50/// Make a tracer that could be set globally via tracing::Tracer::SetTracer
51TracerPtr MakeTracer(std::string_view service_name);
52
53} // namespace tracing
54
55USERVER_NAMESPACE_END