userver: userver/ugrpc/server/middlewares/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/log/component.hpp
4/// @brief @copybrief ugrpc::server::middlewares::log::Component
5
6#include <userver/ugrpc/server/middlewares/base.hpp>
7
8USERVER_NAMESPACE_BEGIN
9
10/// Server logging middleware
11/// @see @ref scripts/docs/en/userver/grpc/server_middlewares.md
12/// @see @ref ugrpc::server::middlewares::log::Component
13namespace ugrpc::server::middlewares::log {
14
15/// @ingroup userver_components userver_base_classes
16///
17/// @brief Component for gRPC server logging
18///
19/// `google::protobuf::Message` fields with the option `[debug_redact = true]` are logged as `[REDACTED]` string
20/// to avoid print secrets in logs. `debug_redact` is available in protobuf version >= 22.
21///
22/// @warning Logs are currently written with log level `debug` by default, which typically means that they are not
23/// written in production. See details below.
24///
25/// ## Static options:
26/// Name | Description | Default value
27/// ---- | ----------- | -------------
28/// log-level | log level threshold | debug
29/// msg-log-level | logging level to use for request and response messages themselves | debug
30/// msg-size-log-limit | max message size to log, the rest will be truncated | 512
31/// local-log-level | local log level of the span for user-provided handler | debug
32/// status-codes-log-level | gRPC status code string -> response log level map | {}
33///
34/// ## Static configuration example:
35///
36/// @snippet grpc/functional_tests/basic_chaos/static_config.yaml Sample grpc server logging middleware component config
37///
38/// In this example, we enable logs for gRPC clients in production.
39///
40/// @see @ref scripts/docs/en/userver/grpc/server_middlewares.md
41class Component final : public MiddlewareFactoryComponentBase {
42public:
43 /// @ingroup userver_component_names
44 /// @brief The default name of ugrpc::server::middlewares::log::Component
45 static constexpr std::string_view kName = "grpc-server-logging";
46
47 Component(const components::ComponentConfig& config, const components::ComponentContext& context);
48
49 static yaml_config::Schema GetStaticConfigSchema();
50
51 yaml_config::Schema GetMiddlewareConfigSchema() const override;
52
53 std::shared_ptr<const MiddlewareBase> CreateMiddleware(
54 const ugrpc::server::ServiceInfo&,
55 const yaml_config::YamlConfig& middleware_config
56 ) const override;
57};
58
59} // namespace ugrpc::server::middlewares::log
60
61template <>
62inline constexpr bool components::kHasValidate<ugrpc::server::middlewares::log::Component> = true;
63
64template <>
65inline constexpr auto components::kConfigFileMode<ugrpc::server::middlewares::log::Component> =
67
68USERVER_NAMESPACE_END