diff --git a/java/com/google/gerrit/server/index/account/AccountIndexerImpl.java b/java/com/google/gerrit/server/index/account/AccountIndexerImpl.java
index 27f6caa..f8c17d1 100644
--- a/java/com/google/gerrit/server/index/account/AccountIndexerImpl.java
+++ b/java/com/google/gerrit/server/index/account/AccountIndexerImpl.java
@@ -79,9 +79,9 @@
     Optional<AccountState> accountState = byIdCache.get(id);
 
     if (accountState.isPresent()) {
-      logger.atInfo().log("Replace account %d in index", id.get());
+      logger.atFine().log("Replace account %d in index", id.get());
     } else {
-      logger.atInfo().log("Delete account %d from index", id.get());
+      logger.atFine().log("Delete account %d from index", id.get());
     }
 
     for (Index<Account.Id, AccountState> i : getWriteIndexes()) {
diff --git a/java/com/google/gerrit/server/index/change/ChangeIndexer.java b/java/com/google/gerrit/server/index/change/ChangeIndexer.java
index 113d340..d0a9749 100644
--- a/java/com/google/gerrit/server/index/change/ChangeIndexer.java
+++ b/java/com/google/gerrit/server/index/change/ChangeIndexer.java
@@ -214,7 +214,7 @@
   }
 
   private void indexImpl(ChangeData cd) throws IOException {
-    logger.atInfo().log("Replace change %d in index.", cd.getId().get());
+    logger.atFine().log("Replace change %d in index.", cd.getId().get());
     for (Index<?, ChangeData> i : getWriteIndexes()) {
       try (TraceTimer traceTimer =
           TraceContext.newTimer(
@@ -419,7 +419,7 @@
 
     @Override
     public Void call() throws IOException {
-      logger.atInfo().log("Delete change %d from index.", id.get());
+      logger.atFine().log("Delete change %d from index.", id.get());
       // Don't bother setting a RequestContext to provide the DB.
       // Implementations should not need to access the DB in order to delete a
       // change ID.
diff --git a/java/com/google/gerrit/server/index/group/GroupIndexerImpl.java b/java/com/google/gerrit/server/index/group/GroupIndexerImpl.java
index 28e441b..d6ba253 100644
--- a/java/com/google/gerrit/server/index/group/GroupIndexerImpl.java
+++ b/java/com/google/gerrit/server/index/group/GroupIndexerImpl.java
@@ -80,9 +80,9 @@
     Optional<InternalGroup> internalGroup = groupCache.get(uuid);
 
     if (internalGroup.isPresent()) {
-      logger.atInfo().log("Replace group %s in index", uuid.get());
+      logger.atFine().log("Replace group %s in index", uuid.get());
     } else {
-      logger.atInfo().log("Delete group %s from index", uuid.get());
+      logger.atFine().log("Delete group %s from index", uuid.get());
     }
 
     for (Index<AccountGroup.UUID, InternalGroup> i : getWriteIndexes()) {
diff --git a/java/com/google/gerrit/server/index/project/ProjectIndexerImpl.java b/java/com/google/gerrit/server/index/project/ProjectIndexerImpl.java
index 1ec5d55..c2a28af 100644
--- a/java/com/google/gerrit/server/index/project/ProjectIndexerImpl.java
+++ b/java/com/google/gerrit/server/index/project/ProjectIndexerImpl.java
@@ -74,7 +74,7 @@
   public void index(Project.NameKey nameKey) throws IOException {
     ProjectState projectState = projectCache.get(nameKey);
     if (projectState != null) {
-      logger.atInfo().log("Replace project %s in index", nameKey.get());
+      logger.atFine().log("Replace project %s in index", nameKey.get());
       ProjectData projectData = projectState.toProjectData();
       for (ProjectIndex i : getWriteIndexes()) {
         try (TraceTimer traceTimer =
@@ -86,7 +86,7 @@
       }
       fireProjectIndexedEvent(nameKey.get());
     } else {
-      logger.atInfo().log("Delete project %s from index", nameKey.get());
+      logger.atFine().log("Delete project %s from index", nameKey.get());
       for (ProjectIndex i : getWriteIndexes()) {
         try (TraceTimer traceTimer =
             TraceContext.newTimer(
