bazel packages: log BUILD file computation steps if >1e6

Use this command to extract information from the log after a command:

$ awk '/BUILD file computation/ {print $5, $10}' $(bazel info server_log 2>/dev/null)

See also github.com/bazelbuild/bazel/issues/11018

RELNOTES: N/A
PiperOrigin-RevId: 303398362
diff --git a/src/main/java/com/google/devtools/build/lib/packages/BUILD b/src/main/java/com/google/devtools/build/lib/packages/BUILD
index 144e776..b92124a 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/packages/BUILD
@@ -47,6 +47,7 @@
         "//src/main/java/com/google/devtools/common/options",
         "//src/main/protobuf:build_java_proto",
         "//third_party:auto_value",
+        "//third_party:flogger",
         "//third_party:guava",
         "//third_party:jsr305",
         "//third_party/protobuf:protobuf_java",
diff --git a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
index 6c3e6b3..d9d752a 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
@@ -19,6 +19,7 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
+import com.google.common.flogger.GoogleLogger;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.cmdline.LabelConstants;
 import com.google.devtools.build.lib.cmdline.LabelValidator;
@@ -92,8 +93,11 @@
  */
 public final class PackageFactory {
 
+  // Used only for a single test (that looks long obsolete).
   private static final Logger logger = Logger.getLogger(PackageFactory.class.getName());
 
+  private static final GoogleLogger glogger = GoogleLogger.forEnclosingClass();
+
   /** An extension to the global namespace of the BUILD language. */
   // TODO(bazel-team): this is largely unrelated to syntax.StarlarkThread.Extension,
   // and should probably be renamed PackageFactory.RuntimeExtension, since really,
@@ -682,6 +686,12 @@
               "BUILD file computation took %d steps, but --max_computation_steps=%d",
               steps, maxSteps));
     }
+    // Write a log message for BUILD files with more than 1e6 steps
+    // (approximately the top 1% in Google's code base).
+    if (steps > 1_000_000) {
+      glogger.atInfo().log(
+          "%s: BUILD file computation took %d steps", pkg.getPackageIdentifier(), steps);
+    }
 
     packageBuilderHelper.onLoadingCompleteAndSuccessful(pkg, starlarkSemantics, loadTimeNanos);
   }