Use Flogger for writing logs

Using Flogger for logging is consistent with Gerrit core. Also Flogger
has a fluent API that is less error-prone and easier to read.

Signed-off-by: Edwin Kempin <[email protected]>
Change-Id: I891db9d59a907b786533162abb119ef16ca3a3c8
Reviewed-on: https://chromium-review.googlesource.com/c/infra/gerrit-plugins/git-numberer/+/3525115
Reviewed-by: Youssef Elghareeb <[email protected]>
diff --git a/src/main/java/com/googlesource/chromium/plugins/gitnumberer/CommitValidator.java b/src/main/java/com/googlesource/chromium/plugins/gitnumberer/CommitValidator.java
index 14a8ae7..8d785f8 100644
--- a/src/main/java/com/googlesource/chromium/plugins/gitnumberer/CommitValidator.java
+++ b/src/main/java/com/googlesource/chromium/plugins/gitnumberer/CommitValidator.java
@@ -7,6 +7,7 @@
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 
+import com.google.common.flogger.FluentLogger;
 import com.google.gerrit.server.config.PluginConfig;
 import java.io.IOException;
 import java.util.ArrayList;
@@ -17,12 +18,10 @@
 import org.eclipse.jgit.revwalk.RevCommit;
 import org.eclipse.jgit.revwalk.RevSort;
 import org.eclipse.jgit.revwalk.RevWalk;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /** Validates new commit objects from single ref's point of view. */
 public class CommitValidator {
-  private static final Logger log = LoggerFactory.getLogger(CommitValidator.class);
+  private static final FluentLogger logger = FluentLogger.forEnclosingClass();
 
   static boolean isEnabled(String ref, PluginConfig pluginConfig) {
     return GitNumbererModule.isRefEnabled(
@@ -44,7 +43,7 @@
         validateWhileSameOriginatingBranch(walk, ref, currentTip, newTip);
 
     if (fromOtherBranch == null) {
-      log.info("verified {} to be a valid orphan branch", ref);
+      logger.atInfo().log("verified %s to be a valid orphan branch", ref);
       return;
     }
     if (!currentTip.equals(ObjectId.zeroId())) {
@@ -178,7 +177,7 @@
       case 1:
         RevCommit parent = commit.getParent(0);
         walk.parseBody(parent);
-        log.debug("validating {} with 1 parent {}", commit, parent);
+        logger.atFine().log("validating %s with 1 parent %s", commit, parent);
         PositionFooters pFooters = extractAndValidateParentFooters(parent);
         checkState(pFooters.position != null);
         if (destBranch.equals(pFooters.position.branch)) {
diff --git a/src/main/java/com/googlesource/chromium/plugins/gitnumberer/GitNumberFooterGenerator.java b/src/main/java/com/googlesource/chromium/plugins/gitnumberer/GitNumberFooterGenerator.java
index 25b4952..de0047a 100644
--- a/src/main/java/com/googlesource/chromium/plugins/gitnumberer/GitNumberFooterGenerator.java
+++ b/src/main/java/com/googlesource/chromium/plugins/gitnumberer/GitNumberFooterGenerator.java
@@ -4,6 +4,7 @@
 
 package com.googlesource.chromium.plugins.gitnumberer;
 
+import com.google.common.flogger.FluentLogger;
 import com.google.gerrit.common.Nullable;
 import com.google.gerrit.entities.BranchNameKey;
 import com.google.gerrit.entities.Project;
@@ -16,11 +17,9 @@
 import com.google.gerrit.server.project.NoSuchProjectException;
 import com.google.inject.Inject;
 import org.eclipse.jgit.revwalk.RevCommit;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class GitNumberFooterGenerator implements ChangeMessageModifier {
-  private static final Logger log = LoggerFactory.getLogger(GitNumberFooterGenerator.class);
+  private static final FluentLogger logger = FluentLogger.forEnclosingClass();
   @Inject private com.google.gerrit.server.config.PluginConfigFactory cfg;
   @Inject private @PluginName String pluginName;
 
@@ -47,7 +46,7 @@
       pluginConfig = cfg.getFromProjectConfig(project, pluginName);
     } catch (NoSuchProjectException e) {
       String msg = "Can't fetch config for project " + project;
-      log.error(msg);
+      logger.atSevere().log(msg);
       throw new IllegalStateException(msg, e);
     }
     if (!Generator.isEnabled(destination.branch(), pluginConfig)) {
@@ -55,24 +54,25 @@
     }
 
     if (baseCommit == null) {
-      log.warn("baseCommit is null");
+      logger.atWarning().log("baseCommit is null");
       return newCommitMessage;
     }
 
     if (baseCommit.getName() == null || original.getName() == null) {
-      log.warn("baseCommit {} or original {} is null", baseCommit, original);
+      logger.atWarning().log("baseCommit %s or original %s is null", baseCommit, original);
       return newCommitMessage;
     }
     if (baseCommit.getName().equals(original.getName())) {
-      log.debug("same original {} and baseCommit {}", original, baseCommit);
+      logger.atFine().log("same original %s and baseCommit %s", original, baseCommit);
       return newCommitMessage;
     }
 
     try {
-      log.debug("generating footers for {} on top of {}", destination.branch(), baseCommit);
+      logger.atFine().log(
+          "generating footers for %s on top of %s", destination.branch(), baseCommit);
       return Generator.childMessage(baseCommit, newCommitMessage, destination.branch());
     } catch (GitNumberValidationError e) {
-      log.info("{}, no generation", e.error);
+      logger.atInfo().log("%s, no generation", e.error);
       failedAttempts.increment();
       /*
        * This means that parent commit has invalid footers, which implies
diff --git a/src/main/java/com/googlesource/chromium/plugins/gitnumberer/GitNumberFooterVerifier.java b/src/main/java/com/googlesource/chromium/plugins/gitnumberer/GitNumberFooterVerifier.java
index 830aad8..d656a79 100644
--- a/src/main/java/com/googlesource/chromium/plugins/gitnumberer/GitNumberFooterVerifier.java
+++ b/src/main/java/com/googlesource/chromium/plugins/gitnumberer/GitNumberFooterVerifier.java
@@ -4,6 +4,7 @@
 
 package com.googlesource.chromium.plugins.gitnumberer;
 
+import com.google.common.flogger.FluentLogger;
 import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.server.config.PluginConfig;
 import com.google.gerrit.server.events.RefReceivedEvent;
@@ -26,14 +27,11 @@
 import org.eclipse.jgit.revwalk.RevWalk;
 import org.eclipse.jgit.transport.ReceiveCommand;
 import org.eclipse.jgit.transport.ReceiveCommand.Type;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 @Singleton
 class GitNumberFooterVerifier
     implements RefOperationValidationListener, OnSubmitValidationListener {
-
-  private static final Logger log = LoggerFactory.getLogger(GitNumberFooterVerifier.class);
+  private static final FluentLogger logger = FluentLogger.forEnclosingClass();
 
   @Inject private com.google.gerrit.server.config.PluginConfigFactory cfg;
 
@@ -53,7 +51,8 @@
     if (!CommitValidator.isEnabled(event.getRefName(), pluginConfig)) {
       return Collections.emptyList();
     }
-    log.debug("validating refOp {}: proposed tip {}", event.getRefName(), event.command.getNewId());
+    logger.atFine().log(
+        "validating refOp %s: proposed tip %s", event.getRefName(), event.command.getNewId());
 
     ObjectId currentTip = ObjectId.zeroId();
     switch (event.command.getType()) {
@@ -107,7 +106,8 @@
       }
       ReceiveCommand cmd = args.getCommands().get(refName);
       try {
-        log.info("validating submit into {}: {} .. {}", refName, cmd.getOldId(), cmd.getNewId());
+        logger.atInfo().log(
+            "validating submit into %s: %s .. %s", refName, cmd.getOldId(), cmd.getNewId());
         CommitValidator.validateMany(
             args::getRef, args.getRevWalk(), config, refName, cmd.getOldId(), cmd.getNewId());
       } catch (IOException e) {
diff --git a/src/main/java/com/googlesource/chromium/plugins/gitnumberer/GitNumbererModule.java b/src/main/java/com/googlesource/chromium/plugins/gitnumberer/GitNumbererModule.java
index dd1f830..e6766c6 100644
--- a/src/main/java/com/googlesource/chromium/plugins/gitnumberer/GitNumbererModule.java
+++ b/src/main/java/com/googlesource/chromium/plugins/gitnumberer/GitNumbererModule.java
@@ -4,6 +4,7 @@
 
 package com.googlesource.chromium.plugins.gitnumberer;
 
+import com.google.common.flogger.FluentLogger;
 import com.google.gerrit.entities.RefNames;
 import com.google.gerrit.extensions.annotations.Exports;
 import com.google.gerrit.extensions.api.projects.ProjectConfigEntryType;
@@ -14,11 +15,9 @@
 import com.google.gerrit.server.git.validators.RefOperationValidationListener;
 import com.google.gerrit.server.util.MagicBranch;
 import com.google.inject.AbstractModule;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class GitNumbererModule extends AbstractModule {
-  private static final Logger log = LoggerFactory.getLogger(CommitValidator.class);
+  private static final FluentLogger logger = FluentLogger.forEnclosingClass();
 
   static boolean isRefEnabled(
       String ref, String op, String[] enabledRefGlobs, String[] disabledRefGlobs) {
@@ -32,24 +31,24 @@
     if (RefNames.REFS_CONFIG.equals(ref)
         || MagicBranch.isMagicBranch(ref)
         || ref.startsWith(RefNames.REFS_CHANGES)) {
-      log.debug(
-          "skipping {} on {} because it is magic or {} or a new change patchset",
-          op,
-          ref,
-          RefNames.REFS_CONFIG);
+      logger.atFine().log(
+          "skipping %s on %s because it is magic or %s or a new change patchset",
+          op, ref, RefNames.REFS_CONFIG);
       return false;
     }
 
     if (RefGlobMatcher.matches(ref, disabledRefGlobs)) {
-      log.debug("skipping {} on {} because it's in disabled refs {}", op, ref, disabledRefGlobs);
+      logger.atFine().log(
+          "skipping %s on %s because it's in disabled refs %s", op, ref, disabledRefGlobs);
       return false;
     }
 
     if (RefGlobMatcher.matches(ref, enabledRefGlobs)) {
-      log.debug("{} enabled on {}", op, ref);
+      logger.atFine().log("%s enabled on %s", op, ref);
       return true;
     }
-    log.debug("skipping {} on {} because it is not in enabled refs {}", op, ref, enabledRefGlobs);
+    logger.atFine().log(
+        "skipping %s on %s because it is not in enabled refs %s", op, ref, enabledRefGlobs);
     return false;
   }
 
diff --git a/src/test/java/com/googlesource/chromium/plugins/gitnumberer/GitNumberFooterGeneratorIT.java b/src/test/java/com/googlesource/chromium/plugins/gitnumberer/GitNumberFooterGeneratorIT.java
index a700afb..7afab2c 100644
--- a/src/test/java/com/googlesource/chromium/plugins/gitnumberer/GitNumberFooterGeneratorIT.java
+++ b/src/test/java/com/googlesource/chromium/plugins/gitnumberer/GitNumberFooterGeneratorIT.java
@@ -3,6 +3,7 @@
 import static com.google.common.truth.Truth.assertThat;
 import static com.google.gerrit.extensions.client.ListChangesOption.CURRENT_REVISION;
 
+import com.google.common.flogger.FluentLogger;
 import com.google.gerrit.acceptance.GitUtil;
 import com.google.gerrit.acceptance.PushOneCommit;
 import com.google.gerrit.common.FooterConstants;
@@ -15,11 +16,9 @@
 import org.eclipse.jgit.revwalk.RevCommit;
 import org.eclipse.jgit.transport.PushResult;
 import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class GitNumberFooterGeneratorIT extends LightweightWithConfigIT {
-  private static final Logger log = LoggerFactory.getLogger(GitNumberFooterGeneratorIT.class);
+  private static final FluentLogger logger = FluentLogger.forEnclosingClass();
 
   @Override
   protected void updateProjectInput(ProjectInput in) {
@@ -99,10 +98,9 @@
     configurePlugin("refs/heads/main");
     assertEnabledPlugin("refs/heads/main");
     // Now we can push child and its message should be auto-generated.
-    log.info(
-        "ready to create a good change on top of good {} with message\n{}\n",
-        r.getName(),
-        r.getFullMessage());
+    logger.atInfo().log(
+        "ready to create a good change on top of good %s with message\n%s\n",
+        r.getName(), r.getFullMessage());
 
     // Create Change
     PushOneCommit.Result change = createChange("refs/for/main");
diff --git a/src/test/java/com/googlesource/chromium/plugins/gitnumberer/GitNumberFooterVerfierIT.java b/src/test/java/com/googlesource/chromium/plugins/gitnumberer/GitNumberFooterVerfierIT.java
index 1563d68..ecc6ce5 100644
--- a/src/test/java/com/googlesource/chromium/plugins/gitnumberer/GitNumberFooterVerfierIT.java
+++ b/src/test/java/com/googlesource/chromium/plugins/gitnumberer/GitNumberFooterVerfierIT.java
@@ -9,6 +9,7 @@
 import static com.google.gerrit.extensions.client.ListChangesOption.SUBMITTABLE;
 import static com.google.gerrit.testing.GerritJUnit.assertThrows;
 
+import com.google.common.flogger.FluentLogger;
 import com.google.gerrit.acceptance.GitUtil;
 import com.google.gerrit.acceptance.PushOneCommit;
 import com.google.gerrit.acceptance.testsuite.project.ProjectOperations;
@@ -22,11 +23,9 @@
 import org.eclipse.jgit.transport.PushResult;
 import org.eclipse.jgit.transport.RemoteRefUpdate;
 import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class GitNumberFooterVerfierIT extends LightweightWithConfigIT {
-  private static final Logger log = LoggerFactory.getLogger(GitNumberFooterVerfierIT.class);
+  private static final FluentLogger logger = FluentLogger.forEnclosingClass();
 
   @Inject private ProjectOperations projectOperations;
 
@@ -303,7 +302,7 @@
    * @return PushOneCommit that has be pushed for commit to be created.
    */
   PushOneCommit prepareOneCommit(String message) {
-    log.info("creatingCommit: \n{}", message);
+    logger.atInfo().log("creatingCommit: \n%s", message);
     return pushFactory.create(admin.newIdent(), testRepo, message, "file", message);
   }
 
@@ -326,10 +325,9 @@
         prepareOneCommit("Initial commit")
             .to("refs/heads/main");
     first.assertOkStatus();
-    log.info(
-        "Created initial commit {} with no footers (remote: {})",
-        first.getCommit(),
-        this.projectOperations.project(project).getHead("refs/heads/main"));
+    logger.atInfo().log(
+        "Created initial commit %s with no footers (remote: %s)",
+        first.getCommit(), this.projectOperations.project(project).getHead("refs/heads/main"));
     // testRepo = cloneProject(project);
     assertThat(this.projectOperations.project(project).getHead("main"))
         .isEqualTo(first.getCommit());
@@ -345,10 +343,9 @@
         prepareOneCommit("Start of main branch\n\nCr-Commit-Position: refs/heads/main@{#1}")
             .to("refs/heads/main");
     first.assertOkStatus();
-    log.info(
-        "Created initial commit {} with valid footers (remote: {})",
-        first.getCommit(),
-        this.projectOperations.project(project).getHead("refs/heads/main"));
+    logger.atInfo().log(
+        "Created initial commit %s with valid footers (remote: %s)",
+        first.getCommit(), this.projectOperations.project(project).getHead("refs/heads/main"));
     // testRepo = cloneProject(project);
     assertThat(this.projectOperations.project(project).getHead("main"))
         .isEqualTo(first.getCommit());
diff --git a/src/test/java/com/googlesource/chromium/plugins/gitnumberer/LightweightWithConfigIT.java b/src/test/java/com/googlesource/chromium/plugins/gitnumberer/LightweightWithConfigIT.java
index 8342e82..b9d97a5 100644
--- a/src/test/java/com/googlesource/chromium/plugins/gitnumberer/LightweightWithConfigIT.java
+++ b/src/test/java/com/googlesource/chromium/plugins/gitnumberer/LightweightWithConfigIT.java
@@ -7,6 +7,7 @@
 import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.truth.Truth.assertWithMessage;
 
+import com.google.common.flogger.FluentLogger;
 import com.google.gerrit.acceptance.LightweightPluginDaemonTest;
 import com.google.gerrit.acceptance.TestPlugin;
 import com.google.gerrit.server.config.PluginConfig;
@@ -19,15 +20,13 @@
 import java.util.List;
 import org.eclipse.jgit.errors.ConfigInvalidException;
 import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 @TestPlugin(
     name = "git-numberer",
     sysModule = "com.googlesource.chromium.plugins.gitnumberer.GitNumbererModule")
 public class LightweightWithConfigIT extends LightweightPluginDaemonTest {
+  private static final FluentLogger logger = FluentLogger.forEnclosingClass();
   protected static String pluginName = "git-numberer";
-  private static final Logger log = LoggerFactory.getLogger(LightweightWithConfigIT.class);
 
   @Inject private com.google.gerrit.server.config.PluginConfigFactory pluginCfgFactory;
 
@@ -115,8 +114,8 @@
       projectConfig.commit(md);
       projectCache.evict(project);
     }
-    log.info(
-        "configured plugin {} on {} excluding {} for {}", pluginName, enabled, disabled, configFor);
+    logger.atInfo().log(
+        "configured plugin %s on %s excluding %s for %s", pluginName, enabled, disabled, configFor);
   }
 
   protected void assertEnabledPlugin(String ref) throws NoSuchProjectException {