diff --git a/buildkite/bazelci.py b/buildkite/bazelci.py
index 3eac72c..ed5413a 100644
--- a/buildkite/bazelci.py
+++ b/buildkite/bazelci.py
@@ -290,13 +290,10 @@
             exit_code = execute_bazel_test(bazel_binary, platform, config.get("test_flags", []),
                                            config.get("test_targets", None), bep_file)
             print_test_summary(bep_file)
-            print("\nAfter Test Summary\n")
             if has_flaky_tests(bep_file) and exit_code == 0:
                 # Fail the pipeline if there were any flaky tests.
                 exit_code = 1
-            print("\nBefore Upload Testlogs\n")
             upload_test_logs(bep_file, tmpdir)
-            print("\nAfter Upload Testlogs\n")
     finally:
         if tmpdir:
             shutil.rmtree(tmpdir)
@@ -457,7 +454,6 @@
     if not os.path.exists(bep_file):
         return
     test_logs = test_logs_to_upload(bep_file, tmpdir)
-    print("\After Test Logs To Upload\n")
     if test_logs:
         cwd = os.getcwd()
         try:
@@ -469,11 +465,9 @@
 
 
 def test_logs_to_upload(bep_file, tmpdir):
-    print("\nBefore Parse BEP\n")
     failed = test_logs_for_status(bep_file, status="FAILED")
     timed_out = test_logs_for_status(bep_file, status="TIMEOUT")
     flaky = test_logs_for_status(bep_file, status="FLAKY")
-    print("\nAfter Parse BEP\n")
     # Rename the test.log files to the target that created them
     # so that it's easy to associate test.log and target.
     new_paths = []
@@ -484,12 +478,8 @@
         for test_log in test_logs:
             try:
                 new_path = test_label_to_path(tmpdir, label, attempt)
-                print("newpath: " + new_path)
-                print("test_log: " + test_log)
                 os.makedirs(os.path.dirname(new_path), exist_ok=True)
-                print("mkdirs ok")
                 copyfile(test_log, new_path)
-                print("copyfile ok")
                 new_paths.append(new_path)
                 attempt = attempt + 1
             except IOError as err:
