diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/PhabricatorItsFacade.java b/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/PhabricatorItsFacade.java
index df12578..93c4e86 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/PhabricatorItsFacade.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/PhabricatorItsFacade.java
@@ -15,6 +15,7 @@
 package com.googlesource.gerrit.plugins.its.phabricator;
 
 import com.google.common.collect.Sets;
+import com.google.common.flogger.FluentLogger;
 import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.server.config.GerritServerConfig;
 import com.google.gson.Gson;
@@ -32,11 +33,9 @@
 import java.net.URL;
 import java.util.Set;
 import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class PhabricatorItsFacade implements ItsFacade {
-  private static final Logger log = LoggerFactory.getLogger(PhabricatorItsFacade.class);
+  private static final FluentLogger logger = FluentLogger.forEnclosingClass();
 
   private static final String GERRIT_CONFIG_URL = "url";
   private static final String GERRIT_CONFIG_TOKEN = "token";
@@ -61,7 +60,7 @@
     } catch (ConduitException e) {
       throw new IOException("Could not update message for task " + task_id, e);
     }
-    log.debug("Added comment " + comment + " to bug " + task_id);
+    logger.atFine().log("Added comment %s to bug %s", comment, task_id);
   }
 
   @Override
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/PhabricatorModule.java b/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/PhabricatorModule.java
index 847e7bb..b8e7aa4 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/PhabricatorModule.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/PhabricatorModule.java
@@ -14,6 +14,7 @@
 
 package com.googlesource.gerrit.plugins.its.phabricator;
 
+import com.google.common.flogger.FluentLogger;
 import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.server.config.GerritServerConfig;
 import com.google.gerrit.server.config.PluginConfigFactory;
@@ -24,12 +25,10 @@
 import com.googlesource.gerrit.plugins.its.base.its.ItsFacadeFactory;
 import com.googlesource.gerrit.plugins.its.base.its.SingleItsServer;
 import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class PhabricatorModule extends AbstractModule {
 
-  private static final Logger log = LoggerFactory.getLogger(PhabricatorModule.class);
+  private static final FluentLogger logger = FluentLogger.forEnclosingClass();
 
   private final String pluginName;
   private final Config gerritConfig;
@@ -48,7 +47,7 @@
   @Override
   protected void configure() {
     if (gerritConfig.getString(pluginName, null, "url") != null) {
-      log.info("Phabricator is configured as ITS");
+      logger.atInfo().log("Phabricator is configured as ITS");
       bind(ItsFacade.class).toInstance(new PhabricatorItsFacade(pluginName, gerritConfig));
       bind(ItsFacadeFactory.class).to(SingleItsServer.class);
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/Conduit.java b/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/Conduit.java
index 33bdf7e..fb7c1f7 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/Conduit.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/Conduit.java
@@ -27,8 +27,6 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Bindings for Phabricator's Conduit API
@@ -43,8 +41,6 @@
 
   public static final String ACTION_PROJECT_REMOVE = "projects.remove";
 
-  private static final Logger log = LoggerFactory.getLogger(Conduit.class);
-
   public static final int CONDUIT_VERSION = 7;
 
   private final ConduitConnection conduitConnection;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/ConduitConnection.java b/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/ConduitConnection.java
index 9d93080..0757e29 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/ConduitConnection.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/ConduitConnection.java
@@ -14,6 +14,7 @@
 
 package com.googlesource.gerrit.plugins.its.phabricator.conduit;
 
+import com.google.common.flogger.FluentLogger;
 import com.google.gson.Gson;
 import com.google.gson.JsonElement;
 import com.googlesource.gerrit.plugins.its.phabricator.conduit.results.CallCapsule;
@@ -28,12 +29,10 @@
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClients;
 import org.apache.http.util.EntityUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /** Abstracts the connection to Conduit API */
 class ConduitConnection {
-  private static final Logger log = LoggerFactory.getLogger(Conduit.class);
+  private static final FluentLogger logger = FluentLogger.forEnclosingClass();
 
   private final String apiUrlBase;
   private final Gson gson;
@@ -55,7 +54,7 @@
    */
   private CloseableHttpClient getClient() {
     if (client == null) {
-      log.trace("Creating new client connection");
+      logger.atFinest().log("Creating new client connection");
       client = HttpClients.createDefault();
     }
     return client;
@@ -94,7 +93,7 @@
 
     String json = gson.toJson(params);
 
-    log.trace("Calling phabricator method " + method + " with the parameters " + json);
+    logger.atFinest().log("Calling phabricator method %s with the parameters %s", method, json);
     httppost.setEntity(new StringEntity("params=" + json, StandardCharsets.UTF_8));
 
     CloseableHttpResponse response;
@@ -104,7 +103,7 @@
       throw new ConduitException("Could not execute Phabricator API call", e);
     }
     try {
-      log.trace("Phabricator HTTP response status: " + response.getStatusLine());
+      logger.atFinest().log("Phabricator HTTP response status: %s", response.getStatusLine());
       HttpEntity entity = response.getEntity();
       String entityString;
       try {
@@ -113,11 +112,11 @@
         throw new ConduitException("Could not read the API response", e);
       }
 
-      log.trace("Phabricator response " + entityString);
+      logger.atFinest().log("Phabricator response: %s", entityString);
       CallCapsule callCapsule = gson.fromJson(entityString, CallCapsule.class);
-      log.trace("callCapsule.result: " + callCapsule.getResult());
-      log.trace("callCapsule.error_code: " + callCapsule.getErrorCode());
-      log.trace("callCapsule.error_info: " + callCapsule.getErrorInfo());
+      logger.atFinest().log("callCapsule.result: %s", callCapsule.getResult());
+      logger.atFinest().log("callCapsule.error_code: %s", callCapsule.getErrorCode());
+      logger.atFinest().log("callCapsule.error_info: %s", callCapsule.getErrorInfo());
       if (callCapsule.getErrorCode() != null || callCapsule.getErrorInfo() != null) {
         throw new ConduitErrorException(
             method, callCapsule.getErrorCode(), callCapsule.getErrorInfo());
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/results/ProjectSearch.java b/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/results/ProjectSearch.java
index 82f2196..078a4d3 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/results/ProjectSearch.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/phabricator/conduit/results/ProjectSearch.java
@@ -14,7 +14,6 @@
 
 package com.googlesource.gerrit.plugins.its.phabricator.conduit.results;
 
-
 /**
  * Models the result for API methods returning Project searches.
  *
