userver: userver/ugrpc/server/middlewares/access_log/component.hpp Source File
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
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/// @ingroup userver_components userver_base_classes
18///
19/// @brief gRPC server access log middleware component. Writes one TSKV log line per handled RPC in a static format.
20/// This log is intended to be collected, parsed and stored for audit or extended statistics purposes.
21///
22/// This middleware is disabled and unregistered by default.
23///
24/// ## Static options:
25/// The component name for static config is `"grpc-server-access-log"`.
26///
27/// Name | Description | Default value
28/// ---- | ----------- | -------------
29/// `access-tskv-logger` | logger name for `access-tskv.log`, must have `format: raw` | -
30///
31/// ## Static configuration example:
32///
33/// @snippet grpc/functional_tests/basic_chaos/static_config.yaml grpc server access log
34///
35/// @see @ref scripts/docs/en/userver/grpc/server_middlewares.md
36class Component final : public MiddlewareFactoryComponentBase {
37public:
38 /// @ingroup userver_component_names
39 /// @brief The default name of ugrpc::server::middlewares::access_log::Component
40 static constexpr std::string_view kName = "grpc-server-access-log";
41
42 Component(const components::ComponentConfig& config, const components::ComponentContext& context);
43
44 std::shared_ptr<const MiddlewareBase> CreateMiddleware(
45 const ugrpc::server::ServiceInfo&,
46 const yaml_config::YamlConfig& middleware_config
47 ) const override;
48
49 yaml_config::Schema GetMiddlewareConfigSchema() const override;
50
51 static yaml_config::Schema GetStaticConfigSchema();
52
53private:
54 components::Logging& logging_component_;
55};
56
57} // namespace ugrpc::server::middlewares::access_log
58
59template <>
60inline constexpr bool components::kHasValidate<ugrpc::server::middlewares::access_log::Component> = true;
61
62template <>
63inline constexpr auto components::kConfigFileMode<ugrpc::server::middlewares::access_log::Component> =
64 ConfigFileMode::kNotRequired;
65
66USERVER_NAMESPACE_END