diff --git a/src/main/java/com/googlesource/gerrit/plugins/uploadvalidator/PluginConfigWithInheritanceFactory.java b/src/main/java/com/googlesource/gerrit/plugins/uploadvalidator/PluginConfigWithInheritanceFactory.java
index d512cb9..cc02caf 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/uploadvalidator/PluginConfigWithInheritanceFactory.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/uploadvalidator/PluginConfigWithInheritanceFactory.java
@@ -14,18 +14,16 @@
 
 package com.googlesource.gerrit.plugins.uploadvalidator;
 
+import com.google.common.flogger.FluentLogger;
 import com.google.gerrit.entities.Project;
 import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.server.config.PluginConfig;
 import com.google.gerrit.server.config.PluginConfigFactory;
 import com.google.gerrit.server.project.NoSuchProjectException;
 import com.google.inject.Inject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class PluginConfigWithInheritanceFactory implements ConfigFactory {
-  private static final Logger log =
-      LoggerFactory.getLogger(PluginConfigWithInheritanceFactory.class);
+  private static final FluentLogger logger = FluentLogger.forEnclosingClass();
   private final PluginConfigFactory pluginConfigFactory;
   private final String pluginName;
 
@@ -40,7 +38,7 @@
     try {
       return pluginConfigFactory.getFromProjectConfigWithInheritance(projectName, pluginName);
     } catch (NoSuchProjectException e) {
-      log.warn(projectName.get() + " not found");
+      logger.atWarning().log("%s not found", projectName.get());
       return null;
     }
   }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/uploadvalidator/ValidatorConfig.java b/src/main/java/com/googlesource/gerrit/plugins/uploadvalidator/ValidatorConfig.java
index d7cca55..4b828a6 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/uploadvalidator/ValidatorConfig.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/uploadvalidator/ValidatorConfig.java
@@ -18,6 +18,7 @@
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableListMultimap;
+import com.google.common.flogger.FluentLogger;
 import com.google.gerrit.common.Nullable;
 import com.google.gerrit.entities.AccessSection;
 import com.google.gerrit.entities.AccountGroup;
@@ -39,11 +40,9 @@
 import java.util.Arrays;
 import java.util.Optional;
 import java.util.regex.Pattern;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class ValidatorConfig {
-  private static final Logger log = LoggerFactory.getLogger(ValidatorConfig.class);
+  private static final FluentLogger logger = FluentLogger.forEnclosingClass();
   private static final String KEY_PROJECT = "project";
   private static final String KEY_REF = "ref";
   private final String pluginName;
@@ -131,11 +130,9 @@
     boolean valid = true;
     for (String refPattern : config.getStringList(refKey)) {
       if (!AccessSection.isValidRefSectionName(refPattern)) {
-        log.error(
-            "Invalid {} name/pattern/regex '{}' in {} project's plugin config",
-            refKey,
-            refPattern,
-            projectName.get());
+        logger.atSevere().log(
+            "Invalid %s name/pattern/regex '%s' in %s project's plugin config",
+            refKey, refPattern, projectName.get());
         valid = false;
       }
     }
@@ -257,7 +254,7 @@
       try {
         return groupQueryProvider.get().byName(groupName);
       } catch (StorageException e) {
-        log.warn(String.format("Cannot lookup group %s by name", groupName.get()), e);
+        logger.atWarning().withCause(e).log("Cannot lookup group %s by name", groupName.get());
       }
       return Optional.empty();
     }
