diff --git a/quic/core/congestion_control/windowed_filter_test.cc b/quic/core/congestion_control/windowed_filter_test.cc
index d9f3655..30387e0 100644
--- a/quic/core/congestion_control/windowed_filter_test.cc
+++ b/quic/core/congestion_control/windowed_filter_test.cc
@@ -32,11 +32,11 @@
     QuicTime::Delta rtt_sample = QuicTime::Delta::FromMilliseconds(10);
     for (int i = 0; i < 5; ++i) {
       windowed_min_rtt_.Update(rtt_sample, now);
-      VLOG(1) << "i: " << i << " sample: " << rtt_sample.ToMilliseconds()
-              << " mins: "
-              << " " << windowed_min_rtt_.GetBest().ToMilliseconds() << " "
-              << windowed_min_rtt_.GetSecondBest().ToMilliseconds() << " "
-              << windowed_min_rtt_.GetThirdBest().ToMilliseconds();
+      QUIC_VLOG(1) << "i: " << i << " sample: " << rtt_sample.ToMilliseconds()
+                   << " mins: "
+                   << " " << windowed_min_rtt_.GetBest().ToMilliseconds() << " "
+                   << windowed_min_rtt_.GetSecondBest().ToMilliseconds() << " "
+                   << windowed_min_rtt_.GetThirdBest().ToMilliseconds();
       now = now + QuicTime::Delta::FromMilliseconds(25);
       rtt_sample = rtt_sample + QuicTime::Delta::FromMilliseconds(10);
     }
@@ -57,11 +57,11 @@
     QuicBandwidth bw_sample = QuicBandwidth::FromBitsPerSecond(1000);
     for (int i = 0; i < 5; ++i) {
       windowed_max_bw_.Update(bw_sample, now);
-      VLOG(1) << "i: " << i << " sample: " << bw_sample.ToBitsPerSecond()
-              << " maxs: "
-              << " " << windowed_max_bw_.GetBest().ToBitsPerSecond() << " "
-              << windowed_max_bw_.GetSecondBest().ToBitsPerSecond() << " "
-              << windowed_max_bw_.GetThirdBest().ToBitsPerSecond();
+      QUIC_VLOG(1) << "i: " << i << " sample: " << bw_sample.ToBitsPerSecond()
+                   << " maxs: "
+                   << " " << windowed_max_bw_.GetBest().ToBitsPerSecond() << " "
+                   << windowed_max_bw_.GetSecondBest().ToBitsPerSecond() << " "
+                   << windowed_max_bw_.GetThirdBest().ToBitsPerSecond();
       now = now + QuicTime::Delta::FromMilliseconds(25);
       bw_sample = bw_sample - QuicBandwidth::FromBitsPerSecond(100);
     }
@@ -120,11 +120,11 @@
     now = now + QuicTime::Delta::FromMilliseconds(25);
     rtt_sample = rtt_sample + QuicTime::Delta::FromMilliseconds(10);
     windowed_min_rtt_.Update(rtt_sample, now);
-    VLOG(1) << "i: " << i << " sample: " << rtt_sample.ToMilliseconds()
-            << " mins: "
-            << " " << windowed_min_rtt_.GetBest().ToMilliseconds() << " "
-            << windowed_min_rtt_.GetSecondBest().ToMilliseconds() << " "
-            << windowed_min_rtt_.GetThirdBest().ToMilliseconds();
+    QUIC_VLOG(1) << "i: " << i << " sample: " << rtt_sample.ToMilliseconds()
+                 << " mins: "
+                 << " " << windowed_min_rtt_.GetBest().ToMilliseconds() << " "
+                 << windowed_min_rtt_.GetSecondBest().ToMilliseconds() << " "
+                 << windowed_min_rtt_.GetThirdBest().ToMilliseconds();
     if (i < 3) {
       EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10),
                 windowed_min_rtt_.GetBest());
@@ -150,11 +150,11 @@
     now = now + QuicTime::Delta::FromMilliseconds(25);
     bw_sample = bw_sample - QuicBandwidth::FromBitsPerSecond(100);
     windowed_max_bw_.Update(bw_sample, now);
-    VLOG(1) << "i: " << i << " sample: " << bw_sample.ToBitsPerSecond()
-            << " maxs: "
-            << " " << windowed_max_bw_.GetBest().ToBitsPerSecond() << " "
-            << windowed_max_bw_.GetSecondBest().ToBitsPerSecond() << " "
-            << windowed_max_bw_.GetThirdBest().ToBitsPerSecond();
+    QUIC_VLOG(1) << "i: " << i << " sample: " << bw_sample.ToBitsPerSecond()
+                 << " maxs: "
+                 << " " << windowed_max_bw_.GetBest().ToBitsPerSecond() << " "
+                 << windowed_max_bw_.GetSecondBest().ToBitsPerSecond() << " "
+                 << windowed_max_bw_.GetThirdBest().ToBitsPerSecond();
     if (i < 3) {
       EXPECT_EQ(QuicBandwidth::FromBitsPerSecond(1000),
                 windowed_max_bw_.GetBest());
@@ -371,8 +371,8 @@
   EXPECT_EQ(kBest, max_filter.GetBest());
   UpdateWithIrrelevantSamples(&max_filter, 20, 3);
   EXPECT_EQ(kBest, max_filter.GetBest());
-  VLOG(0) << max_filter.GetSecondBest();
-  VLOG(0) << max_filter.GetThirdBest();
+  QUIC_VLOG(0) << max_filter.GetSecondBest();
+  QUIC_VLOG(0) << max_filter.GetThirdBest();
 
   // Insert 20000 at t = 4.  50000 at t = 1 expires, so 40000 becomes the new
   // maximum.
diff --git a/quic/core/crypto/crypto_secret_boxer.cc b/quic/core/crypto/crypto_secret_boxer.cc
index 40f69df..c44cbb9 100644
--- a/quic/core/crypto/crypto_secret_boxer.cc
+++ b/quic/core/crypto/crypto_secret_boxer.cc
@@ -55,7 +55,7 @@
                          key.size(), EVP_AEAD_DEFAULT_TAG_LENGTH));
     if (!ctx) {
       ERR_clear_error();
-      LOG(DFATAL) << "EVP_AEAD_CTX_init failed";
+      QUIC_LOG(DFATAL) << "EVP_AEAD_CTX_init failed";
       return;
     }
 
@@ -94,7 +94,7 @@
                            reinterpret_cast<const uint8_t*>(plaintext.data()),
                            plaintext.size(), nullptr, 0)) {
       ERR_clear_error();
-      LOG(DFATAL) << "EVP_AEAD_CTX_seal failed";
+      QUIC_LOG(DFATAL) << "EVP_AEAD_CTX_seal failed";
       return "";
     }
   }
diff --git a/quic/core/quic_received_packet_manager.cc b/quic/core/quic_received_packet_manager.cc
index 528b866..6fb8c49 100644
--- a/quic/core/quic_received_packet_manager.cc
+++ b/quic/core/quic_received_packet_manager.cc
@@ -132,7 +132,7 @@
     // The timestamp format only handles packets in time order.
     if (!ack_frame_.received_packet_times.empty() &&
         ack_frame_.received_packet_times.back().second > receipt_time) {
-      LOG(WARNING)
+      QUIC_LOG(WARNING)
           << "Receive time went backwards from: "
           << ack_frame_.received_packet_times.back().second.ToDebuggingValue()
           << " to " << receipt_time.ToDebuggingValue();
diff --git a/quic/quartc/quartc_fakes.h b/quic/quartc/quartc_fakes.h
index 17e3874..ddff641 100644
--- a/quic/quartc/quartc_fakes.h
+++ b/quic/quartc/quartc_fakes.h
@@ -31,8 +31,9 @@
 
   void OnConnectError(QuicErrorCode error,
                       const std::string& error_details) override {
-    LOG(FATAL) << "Unexpected error during QuartcEndpoint::Connect(); error="
-               << error << ", error_details=" << error_details;
+    QUIC_LOG(FATAL)
+        << "Unexpected error during QuartcEndpoint::Connect(); error=" << error
+        << ", error_details=" << error_details;
   }
 
   QuartcSession* session() { return session_; }
@@ -49,7 +50,7 @@
       : stream_delegate_(stream_delegate), clock_(clock) {}
 
   void OnConnectionWritable() override {
-    LOG(INFO) << "Connection writable!";
+    QUIC_LOG(INFO) << "Connection writable!";
     if (!writable_time_.IsInitialized()) {
       writable_time_ = clock_->Now();
     }
@@ -57,7 +58,7 @@
 
   // Called when peers have established forward-secure encryption
   void OnCryptoHandshakeComplete() override {
-    LOG(INFO) << "Crypto handshake complete!";
+    QUIC_LOG(INFO) << "Crypto handshake complete!";
     crypto_handshake_time_ = clock_->Now();
   }
 
diff --git a/quic/quartc/quartc_stream.cc b/quic/quartc/quartc_stream.cc
index 49ade23..748491d 100644
--- a/quic/quartc/quartc_stream.cc
+++ b/quic/quartc/quartc_stream.cc
@@ -161,8 +161,8 @@
 
 void QuartcStream::SetDelegate(Delegate* delegate) {
   if (delegate_) {
-    LOG(WARNING) << "The delegate for Stream " << id()
-                 << " has already been set.";
+    QUIC_LOG(WARNING) << "The delegate for Stream " << id()
+                      << " has already been set.";
   }
   delegate_ = delegate;
   DCHECK(delegate_);
diff --git a/quic/test_tools/packet_reordering_writer.cc b/quic/test_tools/packet_reordering_writer.cc
index 5fa5659..7bbec0d 100644
--- a/quic/test_tools/packet_reordering_writer.cc
+++ b/quic/test_tools/packet_reordering_writer.cc
@@ -18,12 +18,12 @@
     const QuicSocketAddress& peer_address,
     PerPacketOptions* options) {
   if (!delay_next_) {
-    VLOG(2) << "Writing a non-delayed packet";
+    QUIC_VLOG(2) << "Writing a non-delayed packet";
     WriteResult wr = QuicPacketWriterWrapper::WritePacket(
         buffer, buf_len, self_address, peer_address, options);
     --num_packets_to_wait_;
     if (num_packets_to_wait_ == 0) {
-      VLOG(2) << "Writing a delayed packet";
+      QUIC_VLOG(2) << "Writing a delayed packet";
       // It's time to write the delayed packet.
       QuicPacketWriterWrapper::WritePacket(
           delayed_data_.data(), delayed_data_.length(), delayed_self_address_,
