userver: userver/ugrpc/server/middlewares/access_log/component.hpp Source File
Loading...
Searching...
No Matches
component.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/ugrpc/server/middlewares/access_log/component.hpp
4/// @brief @copybrief ugrpc::server::middlewares::access_log::Component
5
6#include <userver/logging/component.hpp>
7
8#include <userver/ugrpc/server/middlewares/base.hpp>
9
10USERVER_NAMESPACE_BEGIN
11
12/// Server access_log middleware
13/// @see @ref scripts/docs/en/userver/grpc/server_middlewares.md
14/// @see @ref ugrpc::server::middlewares::access_log::Component
15namespace ugrpc::server::middlewares::access_log {
16
17/// @brief Storage to handle additional fields in access_log
18/// @snippet grpc/tests/logging_test.cpp grpc log extra tag
19inline const utils::AnyStorageDataTag<ugrpc::server::StorageContext, logging::LogExtra> kLogExtraTag;
20
21/// @ingroup userver_components userver_base_classes
22///
23/// @brief gRPC server access log middleware component. Writes one TSKV log line per handled RPC in a static format.
24/// This log is intended to be collected, parsed and stored for audit or extended statistics purposes.
25///
26/// This middleware is disabled and unregistered by default.
27///
28/// ## Static options of ugrpc::server::middlewares::access_log::Component :
29/// @include{doc} scripts/docs/en/components_schema/grpc/src/ugrpc/server/middlewares/access_log/component.md
30///
31/// Options inherited from @ref middlewares::MiddlewareFactoryComponentBase :
32/// @include{doc} scripts/docs/en/components_schema/core/src/middlewares/factory_component_base.md
33///
34/// Options inherited from @ref components::ComponentBase :
35/// @include{doc} scripts/docs/en/components_schema/core/src/components/impl/component_base.md
36///
37/// The component name for static config is `"grpc-server-access-log"`.
38///
39/// ## Static configuration example:
40///
41/// @snippet grpc/functional_tests/basic_chaos/static_config.yaml grpc server access log
42///
43/// @see @ref scripts/docs/en/userver/grpc/server_middlewares.md
44class Component final : public MiddlewareFactoryComponentBase {
45public:
46 /// @ingroup userver_component_names
47 /// @brief The default name of ugrpc::server::middlewares::access_log::Component
48 static constexpr std::string_view kName = "grpc-server-access-log";
49
50 Component(const components::ComponentConfig& config, const components::ComponentContext& context);
51
52 std::shared_ptr<const MiddlewareBase> CreateMiddleware(
53 const ugrpc::server::ServiceInfo&,
54 const yaml_config::YamlConfig& middleware_config
55 ) const override;
56
57 yaml_config::Schema GetMiddlewareConfigSchema() const override;
58
59 static yaml_config::Schema GetStaticConfigSchema();
60
61private:
62 components::Logging& logging_component_;
63};
64
65} // namespace ugrpc::server::middlewares::access_log
66
67template <>
68inline constexpr bool components::kHasValidate<ugrpc::server::middlewares::access_log::Component> = true;
69
70template <>
71inline constexpr auto
72 components::kConfigFileMode<ugrpc::server::middlewares::access_log::Component> = ConfigFileMode::kNotRequired;
73
74USERVER_NAMESPACE_END