@@ -40,6 +40,7 @@ std::string GetHeadersLogString(
4040) {
4141 constexpr std::string_view kTruncateSuffix = " ...(truncated, total {} bytes)" ;
4242 constexpr size_t kMaxTruncateSuffixSize = kTruncateSuffix .size () + std::numeric_limits<size_t >::digits10;
43+ constexpr std::string_view kMask = " ***" ;
4344
4445 // Sort to prevent flaky headers reordering, appearing and disappearing for different requests.
4546 using HeaderRef = utils::NotNull<const http::HttpRequest::HeadersMap::const_iterator::value_type*>;
@@ -50,8 +51,9 @@ std::string GetHeadersLogString(
5051 size_t max_result_size = 0 ;
5152
5253 for (const auto & header : request.GetHeaders ()) {
53- max_result_size += header.first .size () + header.second .size () + 3 ;
54- sorted_headers.emplace_back (header, headers_whitelist.find (header.first ) == headers_whitelist.end ());
54+ const IsValueHidden header_hide = headers_whitelist.find (header.first ) == headers_whitelist.end ();
55+ max_result_size += header.first .size () + (header_hide ? kMask .size () : header.second .size ()) + 3 ;
56+ sorted_headers.emplace_back (header, header_hide);
5557 }
5658 std::sort (sorted_headers.begin (), sorted_headers.end (), [](const auto & lhs, const auto & rhs) {
5759 return std::tie (lhs.second , *lhs.first ) < std::tie (rhs.second , *rhs.first );
@@ -62,7 +64,7 @@ std::string GetHeadersLogString(
6264
6365 for (const auto & [header_ref, header_hide] : sorted_headers) {
6466 const auto & [header_name, header_value] = *header_ref;
65- const auto & header_log_value = header_hide ? " *** " : header_value;
67+ const std::string_view header_log_value = header_hide ? kMask : header_value;
6668 if (result.size () + header_name.size () + header_log_value.size () + 3 > response_data_size_log_limit) {
6769 result += fmt::format (kTruncateSuffix , max_result_size);
6870 break ;
0 commit comments