userver: userver/otlp/logs/component.hpp Source File
Loading...
Searching...
No Matches
component.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/otlp/logs/component.hpp
4/// @brief @copybrief otlp::LoggerComponent
5
6#include <memory>
7#include <string>
8
9#include <userver/components/component_fwd.hpp>
10#include <userver/components/raw_component_base.hpp>
11#include <userver/logging/fwd.hpp>
12
13USERVER_NAMESPACE_BEGIN
14
15namespace otlp {
16
17class Logger;
18
19/// @ingroup userver_components
20///
21/// @brief Component to configure logging via OTLP collector.
22///
23/// ## Static options of otlp::LoggerComponent :
24/// @include{doc} scripts/docs/en/components_schema/otlp/src/otlp/logs/component.md
25///
26/// Options inherited from @ref components::ComponentBase :
27/// @include{doc} scripts/docs/en/components_schema/core/src/components/impl/component_base.md
28///
29/// Possible sink values:
30/// * `otlp`: OTLP exporter
31/// * `default`: _default_ logger from the `logging` component
32/// * `both`: _default_ logger and OTLP exporter
33class LoggerComponent final : public components::RawComponentBase {
34public:
35 /// @ingroup userver_component_names
36 /// @brief The default name of otlp::LoggerComponent
37 static constexpr std::string_view kName = "otlp-logger";
38
39 LoggerComponent(const components::ComponentConfig&, const components::ComponentContext&);
40
41 ~LoggerComponent();
42
43 static yaml_config::Schema GetStaticConfigSchema();
44
45private:
46 std::shared_ptr<Logger> logger_;
47 logging::LoggerRef old_logger_;
48};
49
50} // namespace otlp
51
52USERVER_NAMESPACE_END