userver
C++ Async Framework
Toggle main menu visibility
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
8
USERVER_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
13
namespace
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 Before Protobuf v35 (which contains the `TextFormat` early-termination fix
23
/// https://github.com/protocolbuffers/protobuf/pull/26237), each logged message is serialized in full regardless of
24
/// the `msg-size-log-limit` option, and only then the result is truncated. For large messages this may consume a
25
/// significant amount of CPU. If this becomes a problem, disable this middleware,
26
/// see @ref scripts/docs/en/userver/grpc/middlewares_toggle.md
27
///
28
/// @warning Logs are currently written with log level `debug` by default, which typically means that they are not
29
/// written in production. See details below.
30
///
31
/// ## Static options of ugrpc::server::middlewares::log::Component :
32
/// @include{doc} scripts/docs/en/components_schema/grpc/src/ugrpc/server/middlewares/log/component.md
33
///
34
/// Options inherited from @ref middlewares::MiddlewareFactoryComponentBase :
35
/// @include{doc} scripts/docs/en/components_schema/core/src/middlewares/factory_component_base.md
36
///
37
/// Options inherited from @ref components::ComponentBase :
38
/// @include{doc} scripts/docs/en/components_schema/core/src/components/impl/component_base.md
39
///
40
/// ## Static configuration example:
41
///
42
/// @snippet grpc/functional_tests/basic_chaos/static_config.yaml Sample grpc server logging middleware component config
43
///
44
/// In this example, we enable logs for gRPC clients in production.
45
///
46
/// @see @ref scripts/docs/en/userver/grpc/server_middlewares.md
47
class
Component
final
:
public
MiddlewareFactoryComponentBase
{
48
public
:
49
/// @ingroup userver_component_names
50
/// @brief The default name of ugrpc::server::middlewares::log::Component
51
static
constexpr
std::string_view
kName
=
"grpc-server-logging"
;
52
53
Component(
const
components
::ComponentConfig& config,
const
components
::ComponentContext& context);
54
55
static
yaml_config::Schema GetStaticConfigSchema();
56
57
yaml_config::Schema
GetMiddlewareConfigSchema
()
const
override
;
58
59
std::shared_ptr<
const
MiddlewareBase> CreateMiddleware(
60
const
ugrpc::server::ServiceInfo&,
61
const
yaml_config::
YamlConfig
& middleware_config
62
)
const
override
;
63
};
64
65
}
// namespace ugrpc::server::middlewares::log
66
67
template
<>
68
inline
constexpr
bool
components
::kHasValidate<ugrpc::server::middlewares::log::Component> =
true
;
69
70
template
<>
71
inline
constexpr
auto
72
components
::kConfigFileMode<ugrpc::server::middlewares::log::Component> =
ConfigFileMode
::
kNotRequired
;
73
74
USERVER_NAMESPACE_END
userver
ugrpc
server
middlewares
log
component.hpp
Generated on
for userver by
Doxygen
1.17.0