userver: userver/tracing/tracer.hpp Source File
⚠️ This is the documentation for an old userver version. Click here to switch to the latest version.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
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} // namespace tracing
51
52USERVER_NAMESPACE_END