22
33#include < chrono>
44
5+ #include < boost/container/flat_map.hpp>
6+
57#include < userver/logging/impl/logger_base.hpp>
68#include < userver/logging/log.hpp>
79#include < userver/tracing/opentelemetry.hpp>
@@ -20,20 +22,21 @@ namespace ugrpc::server::impl {
2022
2123namespace {
2224
23- void ReportFinishSuccess (
24- const grpc::Status& status,
25- tracing::Span& span,
26- ugrpc::impl::RpcStatisticsScope& statistics_scope
27- ) noexcept {
25+ void ReportFinishSuccess (const grpc::Status& status, CallState& state) noexcept {
2826 try {
2927 const auto status_code = status.error_code ();
30- statistics_scope.OnExplicitFinish (status_code);
28+ state. statistics_scope .OnExplicitFinish (status_code);
3129
30+ auto & span = state.GetSpan ();
3231 span.AddNonInheritableTag (" grpc_code" , ugrpc::ToString (status_code));
3332 if (!status.ok ()) {
3433 span.AddNonInheritableTag (tracing::kErrorFlag , true );
3534 span.AddNonInheritableTag (tracing::kErrorMessage , status.error_message ());
36- span.SetLogLevel (IsServerError (status_code) ? logging::Level::kError : logging::Level::kWarning );
35+ const auto default_error_log_level =
36+ IsServerError (status.error_code ()) ? logging::Level::kError : logging::Level::kWarning ;
37+ const auto error_log_level =
38+ utils::FindOrDefault (state.status_codes_log_level , status.error_code (), default_error_log_level);
39+ span.SetLogLevel (error_log_level);
3740 }
3841 } catch (const std::exception& ex) {
3942 LOG_ERROR () << " Error in ReportFinishSuccess: " << ex;
@@ -143,7 +146,7 @@ ReportCustomError(const USERVER_NAMESPACE::server::handlers::CustomHandlerExcept
143146
144147void CheckFinishStatus (bool finish_op_succeeded, const grpc::Status& status, CallState& state) noexcept {
145148 if (finish_op_succeeded) {
146- ReportFinishSuccess (status, state. GetSpan (), state. statistics_scope );
149+ ReportFinishSuccess (status, state);
147150 } else {
148151 ReportRpcInterruptedError (state);
149152 }
0 commit comments