userver: userver/tracing/tracer.hpp Source File
Loading...
Searching...
No Matches
tracer.hpp
1#pragma once
2
3#include <memory>
4
5#include <userver/rcu/fwd.hpp>
6#include <userver/tracing/span.hpp>
7#include <userver/tracing/tracer_fwd.hpp>
8
9#include <dynamic_config/variables/USERVER_NO_LOG_SPANS.hpp>
10
11USERVER_NAMESPACE_BEGIN
12
13/// Opentracing support
14namespace tracing {
15
16using NoLogSpans = ::dynamic_config::userver_no_log_spans::VariableType;
17
18void SetNoLogSpans(NoLogSpans&& spans);
19bool IsNoLogSpan(const std::string& name);
20NoLogSpans CopyNoLogSpans();
21
22// For legacy opentracing support only.
23class Tracer final {
24public:
25 static void SetTracer(Tracer&& tracer);
26
27 static rcu::ReadablePtr<Tracer, rcu::ExclusiveRcuTraits> ReadTracer();
28
29 static Tracer CopyCurrentTracer();
30
31 Tracer(std::string_view service_name)
32 : service_name_(service_name)
33 {}
34
35 // Only works if legacy opentracing is set up.
36 const std::string& GetServiceName() const;
37
38private:
39 std::string service_name_;
40};
41
42// For tests and benchmarks only!
43class TracerCleanupScope final {
44public:
45 TracerCleanupScope();
46
47 TracerCleanupScope(TracerCleanupScope&&) = delete;
48 TracerCleanupScope& operator=(TracerCleanupScope&&) = delete;
49 ~TracerCleanupScope();
50
51private:
52 Tracer old_tracer_;
53 NoLogSpans old_no_log_spans_;
54};
55
56} // namespace tracing
57
58USERVER_NAMESPACE_END