Only creates a RecordingHeadersHandler when trace logging is enabled.

Previously, a RecordingHeadersHandler was created for every stream, whether trace logging was enabled or not. In the (common) case where trace logging was disabled, the headers handler would still copy every header block, wasting CPU.

Protected by existing flag --http2_trace_logging.

PiperOrigin-RevId: 425462990
diff --git a/http2/core/http2_trace_logging.cc b/http2/core/http2_trace_logging.cc
index 2c1bee3..f8f54b6 100644
--- a/http2/core/http2_trace_logging.cc
+++ b/http2/core/http2_trace_logging.cc
@@ -189,9 +189,13 @@
       << FORMAT_ARG(stream_id);
   spdy::SpdyHeadersHandlerInterface* result =
       wrapped_->OnHeaderFrameStart(stream_id);
-  recording_headers_handler_ =
-      absl::make_unique<spdy::RecordingHeadersHandler>(result);
-  result = recording_headers_handler_.get();
+  if (is_enabled_()) {
+    recording_headers_handler_ =
+        absl::make_unique<spdy::RecordingHeadersHandler>(result);
+    result = recording_headers_handler_.get();
+  } else {
+    recording_headers_handler_ = nullptr;
+  }
   return result;
 }
 
@@ -328,7 +332,8 @@
 
 void Http2TraceLogger::LogReceivedHeaders() const {
   if (recording_headers_handler_ == nullptr) {
-    QUICHE_BUG(bug_2794_1) << "Cannot log headers before creating handler.";
+    // Trace logging was not enabled when the start of the header block was
+    // received.
     return;
   }
   HTTP2_TRACE_LOG(perspective_, is_enabled_)