Migrating to fluent logging (green).
I did some minor clean-ups of the resulting logging statements (mostly moving/adding exceptions as causes that were missed), and a few other drive-bys.
PiperOrigin-RevId: 306429419
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ActionMetadataHandler.java b/src/main/java/com/google/devtools/build/lib/skyframe/ActionMetadataHandler.java
index bbf13fe..347c5f5 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ActionMetadataHandler.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ActionMetadataHandler.java
@@ -20,6 +20,7 @@
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
+import com.google.common.flogger.GoogleLogger;
import com.google.common.io.BaseEncoding;
import com.google.devtools.build.lib.actions.ActionInput;
import com.google.devtools.build.lib.actions.ActionInputHelper;
@@ -55,7 +56,6 @@
import java.util.Map;
import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.logging.Logger;
import javax.annotation.Nullable;
/**
@@ -80,7 +80,7 @@
@VisibleForTesting
public final class ActionMetadataHandler implements MetadataHandler {
- private static final Logger logger = Logger.getLogger(ActionMetadataHandler.class.getName());
+ private static final GoogleLogger logger = GoogleLogger.forEnclosingClass();
/**
* Data for input artifacts. Immutable.
@@ -177,7 +177,8 @@
} catch (IOException e) {
// If we cannot get the FileArtifactValue, then we will make a FileSystem call to get the
// digest, so it is okay to skip and continue here.
- logger.warning("Could not properly get digest for " + entry.getKey().getExecPath());
+ logger.atWarning().log(
+ "Could not properly get digest for %s", entry.getKey().getExecPath());
continue;
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/DiffAwarenessManager.java b/src/main/java/com/google/devtools/build/lib/skyframe/DiffAwarenessManager.java
index 9714601..ed56b41 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/DiffAwarenessManager.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/DiffAwarenessManager.java
@@ -15,6 +15,7 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Maps;
+import com.google.common.flogger.GoogleLogger;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.skyframe.DiffAwareness.View;
@@ -22,7 +23,6 @@
import com.google.devtools.build.lib.vfs.Root;
import com.google.devtools.common.options.OptionsProvider;
import java.util.Map;
-import java.util.logging.Logger;
import javax.annotation.Nullable;
/**
@@ -31,7 +31,7 @@
*/
public final class DiffAwarenessManager {
- private static final Logger logger = Logger.getLogger(DiffAwarenessManager.class.getName());
+ private static final GoogleLogger logger = GoogleLogger.forEnclosingClass();
// The manager attempts to instantiate these in the order in which they are passed to the
// constructor; this is critical in the case where a factory always succeeds.
@@ -97,14 +97,14 @@
View baselineView = diffAwarenessState.baselineView;
if (baselineView == null) {
- logger.info("Initial baseline view for " + pathEntry + " is " + newView);
+ logger.atInfo().log("Initial baseline view for %s is %s", pathEntry, newView);
diffAwarenessState.baselineView = newView;
return BrokenProcessableModifiedFileSet.INSTANCE;
}
ModifiedFileSet diff;
- logger.info(
- "About to compute diff between " + baselineView + " and " + newView + " for " + pathEntry);
+ logger.atInfo().log(
+ "About to compute diff between %s and %s for %s", baselineView, newView, pathEntry);
try {
diff = diffAwareness.getDiff(baselineView, newView);
} catch (BrokenDiffAwarenessException e) {
@@ -122,7 +122,7 @@
private void handleBrokenDiffAwareness(
EventHandler eventHandler, Root pathEntry, BrokenDiffAwarenessException e) {
currentDiffAwarenessStates.remove(pathEntry);
- logger.info("Broken diff awareness for " + pathEntry + ": " + e);
+ logger.atInfo().withCause(e).log("Broken diff awareness for %s", pathEntry);
eventHandler.handle(Event.warn(e.getMessage() + "... temporarily falling back to manually "
+ "checking files for changes"));
}
@@ -140,8 +140,8 @@
for (DiffAwareness.Factory factory : diffAwarenessFactories) {
DiffAwareness newDiffAwareness = factory.maybeCreate(pathEntry);
if (newDiffAwareness != null) {
- logger.info(
- "Using " + newDiffAwareness.name() + " DiffAwareness strategy for " + pathEntry);
+ logger.atInfo().log(
+ "Using %s DiffAwareness strategy for %s", newDiffAwareness.name(), pathEntry);
diffAwarenessState = new DiffAwarenessState(newDiffAwareness, /*baselineView=*/null);
currentDiffAwarenessStates.put(pathEntry, diffAwarenessState);
return diffAwarenessState;
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ExternalFilesHelper.java b/src/main/java/com/google/devtools/build/lib/skyframe/ExternalFilesHelper.java
index 511b72e..11e68ca 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ExternalFilesHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ExternalFilesHelper.java
@@ -14,6 +14,7 @@
package com.google.devtools.build.lib.skyframe;
import com.google.common.base.Preconditions;
+import com.google.common.flogger.GoogleLogger;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.cmdline.LabelConstants;
import com.google.devtools.build.lib.cmdline.RepositoryName;
@@ -29,13 +30,12 @@
import java.io.IOException;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
-import java.util.logging.Logger;
/** Common utilities for dealing with paths outside the package roots. */
public class ExternalFilesHelper {
private static final boolean IN_TEST = System.getenv("TEST_TMPDIR") != null;
- private static final Logger logger = Logger.getLogger(ExternalFilesHelper.class.getName());
+ private static final GoogleLogger logger = GoogleLogger.forEnclosingClass();
private final AtomicReference<PathPackageLocator> pkgLocator;
private final ExternalFileAction externalFileAction;
@@ -284,7 +284,7 @@
break;
case EXTERNAL:
if (numExternalFilesLogged.incrementAndGet() < maxNumExternalFilesToLog) {
- logger.info("Encountered an external path " + rootedPath);
+ logger.atInfo().log("Encountered an external path %s", rootedPath);
}
// fall through
case OUTPUT:
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/FilesystemValueChecker.java b/src/main/java/com/google/devtools/build/lib/skyframe/FilesystemValueChecker.java
index 9ddce19..3c28996 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/FilesystemValueChecker.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/FilesystemValueChecker.java
@@ -23,6 +23,7 @@
import com.google.common.collect.ImmutableSortedSet;
import com.google.common.collect.Range;
import com.google.common.collect.Sets;
+import com.google.common.flogger.GoogleLogger;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.FileArtifactValue;
@@ -64,10 +65,8 @@
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
-import java.util.logging.Logger;
import javax.annotation.Nullable;
/**
@@ -76,7 +75,7 @@
*/
public class FilesystemValueChecker {
- private static final Logger logger = Logger.getLogger(FilesystemValueChecker.class.getName());
+ private static final GoogleLogger logger = GoogleLogger.forEnclosingClass();
private static final Predicate<SkyKey> ACTION_FILTER =
SkyFunctionName.functionIs(SkyFunctions.ACTION_EXECUTION);
@@ -178,10 +177,10 @@
boolean trustRemoteArtifacts)
throws InterruptedException {
if (modifiedOutputFiles == ModifiedFileSet.NOTHING_MODIFIED) {
- logger.info("Not checking for dirty actions since nothing was modified");
+ logger.atInfo().log("Not checking for dirty actions since nothing was modified");
return ImmutableList.of();
}
- logger.info("Accumulating dirty actions");
+ logger.atInfo().log("Accumulating dirty actions");
final int numOutputJobs = Runtime.getRuntime().availableProcessors() * 4;
final Set<SkyKey> actionSkyKeys = new HashSet<>();
try (SilentCloseable c = Profiler.instance().profile("getDirtyActionValues.filter_actions")) {
@@ -197,7 +196,7 @@
for (SkyKey key : actionSkyKeys) {
outputShards.add(Pair.of(key, (ActionExecutionValue) valuesMap.get(key)));
}
- logger.info("Sharded action values for batching");
+ logger.atInfo().log("Sharded action values for batching");
ExecutorService executor = Executors.newFixedThreadPool(
numOutputJobs,
@@ -252,7 +251,7 @@
interrupted = ExecutorUtil.interruptibleShutdown(executor);
}
Throwables.propagateIfPossible(wrapper.getFirstThrownError());
- logger.info("Completed output file stat checks");
+ logger.atInfo().log("Completed output file stat checks");
if (interrupted) {
throw new InterruptedException();
}
@@ -303,7 +302,7 @@
} catch (IOException e) {
// Batch stat did not work. Log an exception and fall back on system calls.
LoggingUtil.logToRemote(Level.WARNING, "Unable to process batch stat", e);
- logger.log(Level.WARNING, "Unable to process batch stat", e);
+ logger.atWarning().withCause(e).log("Unable to process batch stat");
outputStatJob(
dirtyKeys,
shard,
@@ -528,12 +527,9 @@
ElapsedTimeReceiver elapsedTimeReceiver =
elapsedTimeNanos -> {
if (elapsedTimeNanos > 0) {
- logger.info(
- String.format(
- "Spent %d ms checking %d filesystem nodes (%d scanned)",
- TimeUnit.MILLISECONDS.convert(elapsedTimeNanos, TimeUnit.NANOSECONDS),
- numKeysChecked.get(),
- keys.size()));
+ logger.atInfo().log(
+ "Spent %d nanoseconds checking %d filesystem nodes (%d scanned)",
+ elapsedTimeNanos, numKeysChecked.get(), keys.size());
}
};
try (AutoProfiler prof = AutoProfiler.create(elapsedTimeReceiver)) {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java b/src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java
index 133c7a6..1d0713c 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java
@@ -21,6 +21,7 @@
import com.google.common.collect.Iterables;
import com.google.common.collect.Sets;
import com.google.common.collect.Sets.SetView;
+import com.google.common.flogger.GoogleLogger;
import com.google.devtools.build.lib.actions.InconsistentFilesystemException;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
import com.google.devtools.build.lib.cmdline.RepositoryName;
@@ -45,7 +46,6 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.logging.Logger;
/**
* A {@link com.google.devtools.build.lib.pkgcache.RecursivePackageProvider} backed by a {@link
@@ -60,8 +60,7 @@
private final RootPackageExtractor rootPackageExtractor;
private final ImmutableList<TargetPattern> universeTargetPatterns;
- private static final Logger logger =
- Logger.getLogger(GraphBackedRecursivePackageProvider.class.getName());
+ private static final GoogleLogger logger = GoogleLogger.forEnclosingClass();
public GraphBackedRecursivePackageProvider(
WalkableGraph graph,
@@ -111,13 +110,9 @@
SetView<SkyKey> unknownKeys = Sets.difference(pkgKeys, packages.keySet());
if (!Iterables.isEmpty(unknownKeys)) {
- logger.warning(
- "Unable to find "
- + unknownKeys
- + " in the batch lookup of "
- + pkgKeys
- + ". Successfully looked up "
- + packages.keySet());
+ logger.atWarning().log(
+ "Unable to find %s in the batch lookup of %s. Successfully looked up %s",
+ unknownKeys, pkgKeys, packages.keySet());
}
for (Map.Entry<SkyKey, Exception> missingOrExceptionEntry :
graph.getMissingAndExceptions(unknownKeys).entrySet()) {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java
index f85a3f2..f55d13f 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java
@@ -24,6 +24,7 @@
import com.google.common.collect.Maps;
import com.google.common.collect.Range;
import com.google.common.collect.Sets;
+import com.google.common.flogger.GoogleLogger;
import com.google.devtools.build.lib.actions.ActionKeyContext;
import com.google.devtools.build.lib.actions.ArtifactRoot;
import com.google.devtools.build.lib.actions.CommandLineExpansionException;
@@ -113,7 +114,6 @@
import java.util.UUID;
import java.util.concurrent.Callable;
import java.util.function.Consumer;
-import java.util.logging.Logger;
import javax.annotation.Nullable;
/**
@@ -122,7 +122,7 @@
*/
public final class SequencedSkyframeExecutor extends SkyframeExecutor {
- private static final Logger logger = Logger.getLogger(SequencedSkyframeExecutor.class.getName());
+ private static final GoogleLogger logger = GoogleLogger.forEnclosingClass();
/**
* If false, the graph will not store state useful for incremental builds, saving memory but
@@ -386,7 +386,7 @@
* FileStateValues and DirectoryStateValues should be injected.
*/
private void invalidateCachedWorkspacePathsStates() {
- logger.info(
+ logger.atInfo().log(
"Invalidating cached packages and paths states"
+ " because managed directories configuration has changed.");
invalidate(SkyFunctionName.functionIsIn(PACKAGE_LOCATOR_DEPENDENT_VALUES));
@@ -501,9 +501,9 @@
FileType.OUTPUT)
: EnumSet.of(
FileType.EXTERNAL, FileType.EXTERNAL_REPO, FileType.EXTERNAL_IN_MANAGED_DIRECTORY);
- logger.info(
- "About to scan skyframe graph checking for filesystem nodes of types "
- + Iterables.toString(fileTypesToCheck));
+ logger.atInfo().log(
+ "About to scan skyframe graph checking for filesystem nodes of types %s",
+ Iterables.toString(fileTypesToCheck));
ImmutableBatchDirtyResult batchDirtyResult;
try (SilentCloseable c = Profiler.instance().profile("fsvc.getDirtyKeys")) {
batchDirtyResult =
@@ -596,7 +596,7 @@
}
}
- logger.info(result.toString());
+ logger.atInfo().log(result.toString());
}
private static int getNumberOfModifiedFiles(Iterable<SkyKey> modifiedValues) {
@@ -654,7 +654,7 @@
// Now check if it is necessary to wipe the previous state. We do this if either the previous
// or current incrementalStateRetentionStrategy requires the build to have been isolated.
if (oldValueOfTrackIncrementalState != trackIncrementalState) {
- logger.info("Set incremental state to " + trackIncrementalState);
+ logger.atInfo().log("Set incremental state to %b", trackIncrementalState);
evaluatorNeedsReset = true;
} else if (!trackIncrementalState) {
evaluatorNeedsReset = true;
@@ -722,7 +722,7 @@
modifiedFiles += fsvc.getNumberOfModifiedOutputFiles();
outputDirtyFiles += fsvc.getNumberOfModifiedOutputFiles();
modifiedFilesDuringPreviousBuild += fsvc.getNumberOfModifiedOutputFilesDuringPreviousBuild();
- logger.info(String.format("Found %d modified files from last build", modifiedFiles));
+ logger.atInfo().log("Found %d modified files from last build", modifiedFiles);
long stopTime = System.nanoTime();
Profiler.instance()
.logSimpleTask(startTime, stopTime, ProfilerTask.INFO, "detectModifiedOutputFiles");
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java
index 61c4f9e..cc0fa15 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java
@@ -21,6 +21,7 @@
import com.google.common.collect.ImmutableSortedMap;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
+import com.google.common.flogger.GoogleLogger;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.Striped;
import com.google.devtools.build.lib.actions.Action;
@@ -111,8 +112,6 @@
import java.util.concurrent.atomic.AtomicReference;
import java.util.concurrent.locks.Lock;
import java.util.function.Supplier;
-import java.util.logging.Level;
-import java.util.logging.Logger;
import javax.annotation.Nullable;
/**
@@ -135,7 +134,7 @@
SUPPRESS
}
- private static final Logger logger = Logger.getLogger(SkyframeActionExecutor.class.getName());
+ private static final GoogleLogger logger = GoogleLogger.forEnclosingClass();
// Used to prevent check-then-act races in #createOutputDirectories. See the comment there for
// more detail.
@@ -805,6 +804,7 @@
this.postprocessing = postprocessing;
}
+ @SuppressWarnings("LogAndThrow") // Thrown exception shown in user output, not info logs.
@Override
public ActionStepOrResult run(SkyFunction.Environment env) throws InterruptedException {
// There are three ExtendedEventHandler instances available while this method is running.
@@ -856,11 +856,8 @@
// keep previous outputs in place.
action.prepare(actionExecutionContext.getExecRoot());
} catch (IOException e) {
- logger.log(
- Level.WARNING,
- String.format(
- "failed to delete output files before executing action: '%s'", action),
- e);
+ logger.atWarning().withCause(e).log(
+ "failed to delete output files before executing action: '%s'", action);
throw toActionExecutionException(
"failed to delete output files before executing action", e, action, null);
}
@@ -981,6 +978,7 @@
}
}
+ @SuppressWarnings("LogAndThrow") // Thrown exception shown in user output, not info logs.
private ActionExecutionValue actuallyCompleteAction(
ExtendedEventHandler eventHandler, ActionResult actionResult)
throws ActionExecutionException, InterruptedException {
@@ -1024,7 +1022,7 @@
profiler.profile(ProfilerTask.INFO, "outputService.finalizeAction")) {
outputService.finalizeAction(action, metadataHandler);
} catch (EnvironmentalExecException | IOException e) {
- logger.log(Level.WARNING, String.format("unable to finalize action: '%s'", action), e);
+ logger.atWarning().withCause(e).log("unable to finalize action: '%s'", action);
throw toActionExecutionException("unable to finalize action", e, action, fileOutErr);
}
}
@@ -1356,13 +1354,9 @@
Action action, Artifact output, Reporter reporter, boolean isSymlink, IOException exception) {
boolean genrule = action.getMnemonic().equals("Genrule");
String prefix = (genrule ? "declared output '" : "output '") + output.prettyPrint() + "' ";
- logger.warning(
- String.format(
- "Error creating %s%s%s: %s",
- isSymlink ? "symlink " : "",
- prefix,
- genrule ? " by genrule" : "",
- exception.getMessage()));
+ logger.atWarning().log(
+ "Error creating %s%s%s: %s",
+ isSymlink ? "symlink " : "", prefix, genrule ? " by genrule" : "", exception.getMessage());
if (isSymlink) {
String msg = prefix + "is a dangling symbolic link";
reporter.handle(Event.error(action.getOwner().getLocation(), msg));
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
index 59b69e5..90455f9 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
@@ -36,6 +36,7 @@
import com.google.common.collect.Range;
import com.google.common.collect.Sets;
import com.google.common.eventbus.EventBus;
+import com.google.common.flogger.GoogleLogger;
import com.google.devtools.build.lib.actions.ActionAnalysisMetadata;
import com.google.devtools.build.lib.actions.ActionCacheChecker;
import com.google.devtools.build.lib.actions.ActionExecutionStatusReporter;
@@ -210,7 +211,6 @@
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Consumer;
import java.util.function.Supplier;
-import java.util.logging.Logger;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.annotation.Nullable;
@@ -223,7 +223,7 @@
* the build.
*/
public abstract class SkyframeExecutor implements WalkableGraphFactory {
- private static final Logger logger = Logger.getLogger(SkyframeExecutor.class.getName());
+ private static final GoogleLogger logger = GoogleLogger.forEnclosingClass();
// We delete any value that can hold an action -- all subclasses of ActionLookupKey.
// Also remove ArtifactNestedSetValues to prevent memory leak (b/143940221).
@@ -831,7 +831,7 @@
/** Clear any configured target data stored outside Skyframe. */
public void handleAnalysisInvalidatingChange() {
- logger.info("Dropping configured target data");
+ logger.atInfo().log("Dropping configured target data");
analysisCacheDiscarded = true;
clearTrimmingCache();
skyframeBuildView.clearInvalidatedConfiguredTargets();
@@ -1275,7 +1275,7 @@
// information here, so we compute it ourselves.
// TODO(bazel-team): Fancy filesystems could provide it with a hypothetically modified
// DiffAwareness interface.
- logger.info(
+ logger.atInfo().log(
"About to recompute filesystem nodes corresponding to files that are known to have "
+ "changed");
FilesystemValueChecker fsvc =
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/StarlarkImportLookupFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/StarlarkImportLookupFunction.java
index 97fe7e4..2df045c 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/StarlarkImportLookupFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/StarlarkImportLookupFunction.java
@@ -24,6 +24,7 @@
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
+import com.google.common.flogger.GoogleLogger;
import com.google.devtools.build.lib.actions.InconsistentFilesystemException;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.LabelConstants;
@@ -63,7 +64,6 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.logging.Logger;
import javax.annotation.Nullable;
/**
@@ -86,8 +86,7 @@
cachedStarlarkImportLookupValueAndDepsBuilderFactory =
new CachedStarlarkImportLookupValueAndDepsBuilderFactory();
- private static final Logger logger =
- Logger.getLogger(StarlarkImportLookupFunction.class.getName());
+ private static final GoogleLogger logger = GoogleLogger.forEnclosingClass();
public StarlarkImportLookupFunction(
RuleClassProvider ruleClassProvider, PackageFactory packageFactory) {
@@ -223,9 +222,9 @@
public void resetCache() {
if (starlarkImportLookupValueCache != null) {
- logger.info(
- "Starlark inlining cache stats from earlier build: "
- + starlarkImportLookupValueCache.stats());
+ logger.atInfo().log(
+ "Starlark inlining cache stats from earlier build: %s",
+ starlarkImportLookupValueCache.stats());
}
cachedStarlarkImportLookupValueAndDepsBuilderFactory =
new CachedStarlarkImportLookupValueAndDepsBuilderFactory();