diff --git a/quiche/common/platform/default/quiche_platform_impl/quiche_default_proof_providers_impl.cc b/quiche/common/platform/default/quiche_platform_impl/quiche_default_proof_providers_impl.cc
index 97b1482..57bcb81 100644
--- a/quiche/common/platform/default/quiche_platform_impl/quiche_default_proof_providers_impl.cc
+++ b/quiche/common/platform/default/quiche_platform_impl/quiche_default_proof_providers_impl.cc
@@ -13,6 +13,7 @@
 #include "quiche/quic/core/crypto/proof_source.h"
 #include "quiche/quic/core/crypto/proof_source_x509.h"
 #include "quiche/quic/core/crypto/proof_verifier.h"
+#include "quiche/common/platform/api/quiche_logging.h"
 #include "quiche_platform_impl/quiche_command_line_flags_impl.h"
 
 DEFINE_QUICHE_COMMAND_LINE_FLAG_IMPL(std::string, certificate_file, "",
@@ -33,40 +34,31 @@
   std::string certificate_file =
       quiche::GetQuicheCommandLineFlag(FLAGS_certificate_file);
   if (certificate_file.empty()) {
-    // TODO(b/275440369): switch to QUICHE_LOG(FATAL) when available.
-    std::cerr << "QUIC ProofSource needs a certificate file, but "
-                 "--certificate_file was empty."
-              << std::endl;
-    exit(1);
+    QUICHE_LOG(FATAL) << "QUIC ProofSource needs a certificate file, but "
+                         "--certificate_file was empty.";
   }
 
   std::string key_file = quiche::GetQuicheCommandLineFlag(FLAGS_key_file);
   if (key_file.empty()) {
-    // TODO(b/275440369): switch to QUICHE_LOG(FATAL) when available.
-    std::cerr
-        << "QUIC ProofSource needs a private key, but --key_file was empty."
-        << std::endl;
-    exit(1);
+    QUICHE_LOG(FATAL)
+        << "QUIC ProofSource needs a private key, but --key_file was empty.";
   }
 
   std::ifstream cert_stream(certificate_file, std::ios::binary);
   std::vector<std::string> certs =
       quic::CertificateView::LoadPemFromStream(&cert_stream);
   if (certs.empty()) {
-    // TODO(b/275440369): switch to QUICHE_LOG(FATAL) when available.
-    std::cerr << "Failed to load certificate chain from --certificate_file="
-              << certificate_file << std::endl;
-    exit(1);
+    QUICHE_LOG(FATAL)
+        << "Failed to load certificate chain from --certificate_file="
+        << certificate_file;
   }
 
   std::ifstream key_stream(key_file, std::ios::binary);
   std::unique_ptr<quic::CertificatePrivateKey> private_key =
       quic::CertificatePrivateKey::LoadPemFromStream(&key_stream);
   if (private_key == nullptr) {
-    // TODO(b/275440369): switch to QUICHE_LOG(FATAL) when available.
-    std::cerr << "Failed to load private key from --key_file=" << key_file
-              << std::endl;
-    exit(1);
+    QUICHE_LOG(FATAL) << "Failed to load private key from --key_file="
+                      << key_file;
   }
 
   QuicheReferenceCountedPointer<quic::ProofSource::Chain> chain(
