Improve logging by adding more ToString methods and refactor

gfe-relnote: change debug-only logs, not flag-protected
PiperOrigin-RevId: 272905128
Change-Id: I501df69f6440adfe13dd92a4a7debd97d2534bd0
diff --git a/quic/core/frames/quic_frame.cc b/quic/core/frames/quic_frame.cc
index b23f9c0..5e85fc0 100644
--- a/quic/core/frames/quic_frame.cc
+++ b/quic/core/frames/quic_frame.cc
@@ -298,7 +298,7 @@
       break;
     }
     case CRYPTO_FRAME: {
-      os << "type { CRYPTO_FRAME } " << frame.crypto_frame;
+      os << "type { CRYPTO_FRAME } " << *(frame.crypto_frame);
       break;
     }
     case MTU_DISCOVERY_FRAME: {
diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc
index ce1e6c4..9cabfc5 100644
--- a/quic/core/quic_connection.cc
+++ b/quic/core/quic_connection.cc
@@ -1368,8 +1368,12 @@
     ++stats_.num_connectivity_probing_received;
   }
 
-  QUIC_DVLOG(1) << ENDPOINT << "Got packet " << last_header_.packet_number
-                << " for "
+  QUIC_DVLOG(1) << ENDPOINT << "Got"
+                << (SupportsMultiplePacketNumberSpaces()
+                        ? (" " + EncryptionLevelToString(
+                                     last_decrypted_packet_level_))
+                        : "")
+                << " packet " << last_header_.packet_number << " for "
                 << GetServerConnectionIdAsRecipient(last_header_, perspective_);
 
   QUIC_DLOG_IF(INFO, current_packet_content_ == SECOND_FRAME_IS_PADDING)
@@ -1447,8 +1451,7 @@
         clock_->ApproximateNow(), sent_packet_manager_.GetRttStats());
   } else {
     QUIC_DLOG(INFO) << ENDPOINT << "Not updating ACK timeout for "
-                    << QuicUtils::EncryptionLevelToString(
-                           last_decrypted_packet_level_)
+                    << EncryptionLevelToString(last_decrypted_packet_level_)
                     << " as we do not have the corresponding encrypter";
   }
 
@@ -1483,12 +1486,12 @@
           sent_packet_manager_.GetLeastUnacked() + max_tracked_packets_) {
     CloseConnection(
         QUIC_TOO_MANY_OUTSTANDING_SENT_PACKETS,
-        QuicStrCat(
-            "More than ", max_tracked_packets_, " outstanding, least_unacked: ",
-            sent_packet_manager_.GetLeastUnacked().ToUint64(),
-            ", packets_processed: ", stats_.packets_processed,
-            ", last_decrypted_packet_level: ",
-            QuicUtils::EncryptionLevelToString(last_decrypted_packet_level_)),
+        QuicStrCat("More than ", max_tracked_packets_,
+                   " outstanding, least_unacked: ",
+                   sent_packet_manager_.GetLeastUnacked().ToUint64(),
+                   ", packets_processed: ", stats_.packets_processed,
+                   ", last_decrypted_packet_level: ",
+                   EncryptionLevelToString(last_decrypted_packet_level_)),
         ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET);
   }
 }
@@ -1621,7 +1624,7 @@
     // handshake deadlock.
     QUIC_DVLOG(1) << ENDPOINT << "Failed to send control frame: " << frame
                   << " at encryption level: "
-                  << QuicUtils::EncryptionLevelToString(encryption_level_);
+                  << EncryptionLevelToString(encryption_level_);
     return false;
   }
   ScopedPacketFlusher flusher(this);
@@ -1713,9 +1716,9 @@
   QUIC_DVLOG(1) << ENDPOINT << "Received undecryptable packet of length "
                 << packet.length() << " with"
                 << (has_decryption_key ? "" : "out") << " key at level "
-                << QuicUtils::EncryptionLevelToString(decryption_level)
+                << EncryptionLevelToString(decryption_level)
                 << " while connection is at encryption level "
-                << QuicUtils::EncryptionLevelToString(encryption_level_);
+                << EncryptionLevelToString(encryption_level_);
   DCHECK(GetQuicRestartFlag(quic_framer_uses_undecryptable_upcall));
   QUIC_RESTART_FLAG_COUNT_N(quic_framer_uses_undecryptable_upcall, 1, 7);
   DCHECK(EncryptionLevelIsValid(decryption_level));
@@ -2166,7 +2169,7 @@
   QuicFrame updated_ack_frame = GetUpdatedAckFrame();
   QUIC_BUG_IF(updated_ack_frame.ack_frame->packets.Empty())
       << ENDPOINT << "Attempted to opportunistically bundle an empty "
-      << QuicUtils::EncryptionLevelToString(encryption_level_) << " ACK, "
+      << EncryptionLevelToString(encryption_level_) << " ACK, "
       << (has_pending_ack ? "" : "!") << "has_pending_ack, stop_waiting_count_ "
       << stop_waiting_count_;
   frames.push_back(updated_ack_frame);
@@ -2276,7 +2279,7 @@
                         ? "data bearing "
                         : " ack only ")
                 << ", encryption level: "
-                << QuicUtils::EncryptionLevelToString(packet->encryption_level)
+                << EncryptionLevelToString(packet->encryption_level)
                 << ", encrypted length:" << encrypted_length;
   QUIC_DVLOG(2) << ENDPOINT << "packet(" << packet_number << "): " << std::endl
                 << QuicTextUtils::HexDump(QuicStringPiece(
@@ -2753,8 +2756,8 @@
 
 void QuicConnection::SetDefaultEncryptionLevel(EncryptionLevel level) {
   QUIC_DVLOG(1) << ENDPOINT << "Setting default encryption level from "
-                << QuicUtils::EncryptionLevelToString(encryption_level_)
-                << " to " << QuicUtils::EncryptionLevelToString(level);
+                << EncryptionLevelToString(encryption_level_) << " to "
+                << EncryptionLevelToString(level);
   if (level != encryption_level_ && packet_generator_.HasPendingFrames()) {
     // Flush all queued frames when encryption level changes.
     ScopedPacketFlusher flusher(this);
@@ -3810,7 +3813,7 @@
     // A forward secure packet has been received.
     QUIC_BUG_IF(encryption_level_ != ENCRYPTION_FORWARD_SECURE)
         << ENDPOINT << "Unexpected connection close encryption level "
-        << QuicUtils::EncryptionLevelToString(encryption_level_);
+        << EncryptionLevelToString(encryption_level_);
     return ENCRYPTION_FORWARD_SECURE;
   }
   if (framer_.HasEncrypterOfEncryptionLevel(ENCRYPTION_ZERO_RTT)) {
@@ -3842,12 +3845,13 @@
     if (!framer_.HasEncrypterOfEncryptionLevel(
             QuicUtils::GetEncryptionLevel(static_cast<PacketNumberSpace>(i)))) {
       QUIC_BUG << ENDPOINT << "Cannot send ACKs for packet number space "
-               << static_cast<uint32_t>(i)
+               << PacketNumberSpaceToString(static_cast<PacketNumberSpace>(i))
                << " without corresponding encrypter";
       continue;
     }
-    QUIC_DVLOG(1) << ENDPOINT << "Sending ACK of packet number space: "
-                  << static_cast<uint32_t>(i);
+    QUIC_DVLOG(1) << ENDPOINT << "Sending ACK of packet number space "
+                  << PacketNumberSpaceToString(
+                         static_cast<PacketNumberSpace>(i));
     // Switch to the appropriate encryption level.
     SetDefaultEncryptionLevel(
         QuicUtils::GetEncryptionLevel(static_cast<PacketNumberSpace>(i)));
diff --git a/quic/core/quic_framer.cc b/quic/core/quic_framer.cc
index e10270d..6b55cfc 100644
--- a/quic/core/quic_framer.cc
+++ b/quic/core/quic_framer.cc
@@ -4127,8 +4127,8 @@
   DCHECK_GE(level, decrypter_level_);
   DCHECK(!version_.KnowsWhichDecrypterToUse());
   QUIC_DVLOG(1) << ENDPOINT << "Setting decrypter from level "
-                << QuicUtils::EncryptionLevelToString(decrypter_level_)
-                << " to " << QuicUtils::EncryptionLevelToString(level);
+                << EncryptionLevelToString(decrypter_level_) << " to "
+                << EncryptionLevelToString(level);
   decrypter_[decrypter_level_] = nullptr;
   decrypter_[level] = std::move(decrypter);
   decrypter_level_ = level;
@@ -4141,9 +4141,8 @@
   DCHECK_NE(level, decrypter_level_);
   DCHECK(!version_.KnowsWhichDecrypterToUse());
   QUIC_DVLOG(1) << ENDPOINT << "Setting alternative decrypter from level "
-                << QuicUtils::EncryptionLevelToString(
-                       alternative_decrypter_level_)
-                << " to " << QuicUtils::EncryptionLevelToString(level);
+                << EncryptionLevelToString(alternative_decrypter_level_)
+                << " to " << EncryptionLevelToString(level);
   if (alternative_decrypter_level_ != NUM_ENCRYPTION_LEVELS) {
     decrypter_[alternative_decrypter_level_] = nullptr;
   }
@@ -4156,14 +4155,14 @@
                                   std::unique_ptr<QuicDecrypter> decrypter) {
   DCHECK(version_.KnowsWhichDecrypterToUse());
   QUIC_DVLOG(1) << ENDPOINT << "Installing decrypter at level "
-                << QuicUtils::EncryptionLevelToString(level);
+                << EncryptionLevelToString(level);
   decrypter_[level] = std::move(decrypter);
 }
 
 void QuicFramer::RemoveDecrypter(EncryptionLevel level) {
   DCHECK(version_.KnowsWhichDecrypterToUse());
   QUIC_DVLOG(1) << ENDPOINT << "Removing decrypter at level "
-                << QuicUtils::EncryptionLevelToString(level);
+                << EncryptionLevelToString(level);
   decrypter_[level] = nullptr;
 }
 
@@ -4188,7 +4187,7 @@
   DCHECK_GE(level, 0);
   DCHECK_LT(level, NUM_ENCRYPTION_LEVELS);
   QUIC_DVLOG(1) << ENDPOINT << "Setting encrypter at level "
-                << QuicUtils::EncryptionLevelToString(level);
+                << EncryptionLevelToString(level);
   encrypter_[level] = std::move(encrypter);
 }
 
@@ -4210,7 +4209,7 @@
   if (encrypter_[level] == nullptr) {
     QUIC_BUG << ENDPOINT
              << "Attempted to encrypt in place without encrypter at level "
-             << QuicUtils::EncryptionLevelToString(level);
+             << EncryptionLevelToString(level);
     RaiseError(QUIC_ENCRYPTION_FAILURE);
     return 0;
   }
@@ -4334,7 +4333,7 @@
     QUIC_DVLOG(1)
         << ENDPOINT
         << "No decrypter available for removing header protection at level "
-        << QuicUtils::EncryptionLevelToString(expected_decryption_level);
+        << EncryptionLevelToString(expected_decryption_level);
     return false;
   }
 
@@ -4455,7 +4454,7 @@
   DCHECK(packet_number.IsInitialized());
   if (encrypter_[level] == nullptr) {
     QUIC_BUG << ENDPOINT << "Attempted to encrypt without encrypter at level "
-             << QuicUtils::EncryptionLevelToString(level);
+             << EncryptionLevelToString(level);
     RaiseError(QUIC_ENCRYPTION_FAILURE);
     return 0;
   }
diff --git a/quic/core/quic_packet_creator.cc b/quic/core/quic_packet_creator.cc
index b717054..e7f5185 100644
--- a/quic/core/quic_packet_creator.cc
+++ b/quic/core/quic_packet_creator.cc
@@ -41,10 +41,10 @@
     case ENCRYPTION_FORWARD_SECURE:
       QUIC_BUG
           << "Try to derive long header type for packet with encryption level: "
-          << QuicUtils::EncryptionLevelToString(level);
+          << EncryptionLevelToString(level);
       return INVALID_PACKET_TYPE;
     default:
-      QUIC_BUG << QuicUtils::EncryptionLevelToString(level);
+      QUIC_BUG << EncryptionLevelToString(level);
       return INVALID_PACKET_TYPE;
   }
 }
@@ -1267,15 +1267,15 @@
                                  bool save_retransmittable_frames,
                                  TransmissionType transmission_type) {
   QUIC_DVLOG(1) << ENDPOINT << "Adding frame with transmission type "
-                << transmission_type << ": " << frame;
+                << TransmissionTypeToString(transmission_type) << ": " << frame;
   if (frame.type == STREAM_FRAME &&
       !QuicUtils::IsCryptoStreamId(framer_->transport_version(),
                                    frame.stream_frame.stream_id) &&
       (packet_.encryption_level == ENCRYPTION_INITIAL ||
        packet_.encryption_level == ENCRYPTION_HANDSHAKE)) {
-    const std::string error_details = QuicStrCat(
-        "Cannot send stream data with level: ",
-        QuicUtils::EncryptionLevelToString(packet_.encryption_level));
+    const std::string error_details =
+        QuicStrCat("Cannot send stream data with level: ",
+                   EncryptionLevelToString(packet_.encryption_level));
     QUIC_BUG << error_details;
     delegate_->OnUnrecoverableError(
         QUIC_ATTEMPT_TO_SEND_UNENCRYPTED_STREAM_DATA, error_details);
@@ -1370,8 +1370,9 @@
 
   bool success = AddFrame(QuicFrame(QuicPaddingFrame(padding_bytes)), false,
                           packet_.transmission_type);
-  QUIC_BUG_IF(!success) << "Failed to add padding_bytes:" << padding_bytes
-                        << " transmission_type:" << packet_.transmission_type;
+  QUIC_BUG_IF(!success) << "Failed to add padding_bytes: " << padding_bytes
+                        << " transmission_type: "
+                        << TransmissionTypeToString(packet_.transmission_type);
 }
 
 bool QuicPacketCreator::IncludeNonceInPublicHeader() const {
@@ -1429,7 +1430,7 @@
   if (!can_set_transmission_type()) {
     QUIC_DVLOG_IF(1, type != packet_.transmission_type)
         << ENDPOINT << "Setting Transmission type to "
-        << QuicUtils::TransmissionTypeToString(type);
+        << TransmissionTypeToString(type);
 
     packet_.transmission_type = type;
   }
diff --git a/quic/core/quic_sent_packet_manager.cc b/quic/core/quic_sent_packet_manager.cc
index 6baac98..a32a253 100644
--- a/quic/core/quic_sent_packet_manager.cc
+++ b/quic/core/quic_sent_packet_manager.cc
@@ -521,8 +521,7 @@
                (!session_decides_what_to_write() ||
                 transmission_type != RTO_RETRANSMISSION)) &&
               !unacked_packets_.HasRetransmittableFrames(*transmission_info))
-      << "transmission_type: "
-      << QuicUtils::TransmissionTypeToString(transmission_type);
+      << "transmission_type: " << TransmissionTypeToString(transmission_type);
   // Handshake packets should never be sent as probing retransmissions.
   DCHECK(pto_enabled_ || !transmission_info->has_crypto_handshake ||
          transmission_type != PROBING_RETRANSMISSION);
@@ -690,8 +689,7 @@
         // retransmission and no new data gets acked.
         QUIC_DVLOG(1) << "Detect spurious retransmitted packet "
                       << packet_number << " transmission type: "
-                      << QuicUtils::TransmissionTypeToString(
-                             info->transmission_type);
+                      << TransmissionTypeToString(info->transmission_type);
         RecordSpuriousRetransmissions(*info, packet_number);
       }
     }
@@ -1372,7 +1370,7 @@
                  << ", packets_acked_: " << packets_acked_;
       } else {
         QUIC_PEER_BUG << "Received "
-                      << QuicUtils::EncryptionLevelToString(ack_decrypted_level)
+                      << EncryptionLevelToString(ack_decrypted_level)
                       << " ack for unackable packet: "
                       << acked_packet.packet_number << " with state: "
                       << QuicUtils::SentPacketStateToString(info->state);
@@ -1386,7 +1384,7 @@
       continue;
     }
     QUIC_DVLOG(1) << ENDPOINT << "Got an "
-                  << QuicUtils::EncryptionLevelToString(ack_decrypted_level)
+                  << EncryptionLevelToString(ack_decrypted_level)
                   << " ack for packet " << acked_packet.packet_number
                   << " , state: "
                   << QuicUtils::SentPacketStateToString(info->state);
diff --git a/quic/core/quic_types.cc b/quic/core/quic_types.cc
index 46f809d..a8373c1 100644
--- a/quic/core/quic_types.cc
+++ b/quic/core/quic_types.cc
@@ -457,13 +457,56 @@
   return os;
 }
 
+std::string TransmissionTypeToString(TransmissionType transmission_type) {
+  switch (transmission_type) {
+    RETURN_STRING_LITERAL(NOT_RETRANSMISSION);
+    RETURN_STRING_LITERAL(HANDSHAKE_RETRANSMISSION);
+    RETURN_STRING_LITERAL(ALL_UNACKED_RETRANSMISSION);
+    RETURN_STRING_LITERAL(ALL_INITIAL_RETRANSMISSION);
+    RETURN_STRING_LITERAL(LOSS_RETRANSMISSION);
+    RETURN_STRING_LITERAL(RTO_RETRANSMISSION);
+    RETURN_STRING_LITERAL(TLP_RETRANSMISSION);
+    RETURN_STRING_LITERAL(PROBING_RETRANSMISSION);
+    default:
+      // Some varz rely on this behavior for statistic collection.
+      if (transmission_type == LAST_TRANSMISSION_TYPE + 1) {
+        return "INVALID_TRANSMISSION_TYPE";
+      }
+      return QuicStrCat("Unknown(", static_cast<int>(transmission_type), ")");
+      break;
+  }
+}
+
+std::string PacketNumberSpaceToString(PacketNumberSpace packet_number_space) {
+  switch (packet_number_space) {
+    RETURN_STRING_LITERAL(INITIAL_DATA);
+    RETURN_STRING_LITERAL(HANDSHAKE_DATA);
+    RETURN_STRING_LITERAL(APPLICATION_DATA);
+    default:
+      return QuicStrCat("Unknown(", static_cast<int>(packet_number_space), ")");
+      break;
+  }
+}
+
+std::string EncryptionLevelToString(EncryptionLevel level) {
+  switch (level) {
+    RETURN_STRING_LITERAL(ENCRYPTION_INITIAL);
+    RETURN_STRING_LITERAL(ENCRYPTION_HANDSHAKE);
+    RETURN_STRING_LITERAL(ENCRYPTION_ZERO_RTT);
+    RETURN_STRING_LITERAL(ENCRYPTION_FORWARD_SECURE);
+    default:
+      return QuicStrCat("Unknown(", static_cast<int>(level), ")");
+      break;
+  }
+}
+
 std::string QuicConnectionCloseTypeString(QuicConnectionCloseType type) {
   switch (type) {
     RETURN_STRING_LITERAL(GOOGLE_QUIC_CONNECTION_CLOSE);
     RETURN_STRING_LITERAL(IETF_QUIC_TRANSPORT_CONNECTION_CLOSE);
     RETURN_STRING_LITERAL(IETF_QUIC_APPLICATION_CONNECTION_CLOSE);
     default:
-      return QuicStrCat("Unknown: ", static_cast<int>(type));
+      return QuicStrCat("Unknown(", static_cast<int>(type), ")");
       break;
   }
 }
diff --git a/quic/core/quic_types.h b/quic/core/quic_types.h
index bd7ff55..e1c9c68 100644
--- a/quic/core/quic_types.h
+++ b/quic/core/quic_types.h
@@ -157,6 +157,9 @@
   LAST_TRANSMISSION_TYPE = PROBING_RETRANSMISSION,
 };
 
+QUIC_EXPORT_PRIVATE std::string TransmissionTypeToString(
+    TransmissionType transmission_type);
+
 enum HasRetransmittableData : uint8_t {
   NO_RETRANSMITTABLE_DATA,
   HAS_RETRANSMITTABLE_DATA,
@@ -407,6 +410,8 @@
   return ENCRYPTION_INITIAL <= level && level < NUM_ENCRYPTION_LEVELS;
 }
 
+QUIC_EXPORT_PRIVATE std::string EncryptionLevelToString(EncryptionLevel level);
+
 enum AddressChangeType : uint8_t {
   // IP address and port remain unchanged.
   NO_CHANGE,
@@ -630,6 +635,9 @@
   NUM_PACKET_NUMBER_SPACES,
 };
 
+QUIC_EXPORT_PRIVATE std::string PacketNumberSpaceToString(
+    PacketNumberSpace packet_number_space);
+
 enum AckMode { TCP_ACKING, ACK_DECIMATION, ACK_DECIMATION_WITH_REORDERING };
 
 // Used to return the result of processing a received ACK frame.
diff --git a/quic/core/quic_utils.cc b/quic/core/quic_utils.cc
index da2cb1a..07565ee 100644
--- a/quic/core/quic_utils.cc
+++ b/quic/core/quic_utils.cc
@@ -142,33 +142,6 @@
   case x:                        \
     return #x;
 
-// static
-const char* QuicUtils::EncryptionLevelToString(EncryptionLevel level) {
-  switch (level) {
-    RETURN_STRING_LITERAL(ENCRYPTION_INITIAL);
-    RETURN_STRING_LITERAL(ENCRYPTION_HANDSHAKE);
-    RETURN_STRING_LITERAL(ENCRYPTION_ZERO_RTT);
-    RETURN_STRING_LITERAL(ENCRYPTION_FORWARD_SECURE);
-    RETURN_STRING_LITERAL(NUM_ENCRYPTION_LEVELS);
-  }
-  return "INVALID_ENCRYPTION_LEVEL";
-}
-
-// static
-const char* QuicUtils::TransmissionTypeToString(TransmissionType type) {
-  switch (type) {
-    RETURN_STRING_LITERAL(NOT_RETRANSMISSION);
-    RETURN_STRING_LITERAL(HANDSHAKE_RETRANSMISSION);
-    RETURN_STRING_LITERAL(LOSS_RETRANSMISSION);
-    RETURN_STRING_LITERAL(ALL_UNACKED_RETRANSMISSION);
-    RETURN_STRING_LITERAL(ALL_INITIAL_RETRANSMISSION);
-    RETURN_STRING_LITERAL(RTO_RETRANSMISSION);
-    RETURN_STRING_LITERAL(TLP_RETRANSMISSION);
-    RETURN_STRING_LITERAL(PROBING_RETRANSMISSION);
-  }
-  return "INVALID_TRANSMISSION_TYPE";
-}
-
 std::string QuicUtils::AddressChangeTypeToString(AddressChangeType type) {
   switch (type) {
     RETURN_STRING_LITERAL(NO_CHANGE);
@@ -359,7 +332,7 @@
     case PROBING_RETRANSMISSION:
       return PROBE_RETRANSMITTED;
     default:
-      QUIC_BUG << QuicUtils::TransmissionTypeToString(retransmission_type)
+      QUIC_BUG << TransmissionTypeToString(retransmission_type)
                << " is not a retransmission_type";
       return UNACKABLE;
   }
diff --git a/quic/core/quic_utils.h b/quic/core/quic_utils.h
index de855a0..25ab7bb 100644
--- a/quic/core/quic_utils.h
+++ b/quic/core/quic_utils.h
@@ -50,12 +50,6 @@
   // to |out|.
   static void SerializeUint128Short(QuicUint128 v, uint8_t* out);
 
-  // Returns the level of encryption as a char*
-  static const char* EncryptionLevelToString(EncryptionLevel level);
-
-  // Returns TransmissionType as a char*
-  static const char* TransmissionTypeToString(TransmissionType type);
-
   // Returns AddressChangeType as a string.
   static std::string AddressChangeTypeToString(AddressChangeType type);