diff --git a/.gitignore b/.gitignore
index 8c58b98..ec6ea01 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,3 +10,4 @@
 /buck-cache
 /buck-out
 *.iml
+/.apt_generated/
diff --git a/WORKSPACE b/WORKSPACE
index a6e318f..f08fafb 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -3,7 +3,7 @@
 load("//:bazlets.bzl", "load_bazlets")
 
 load_bazlets(
-    commit = "5c1e201c6835e56a69a980c72206431e2a9d7d80",
+    commit = "c827ba79413585ab9dfc1bbd0d7f609eedd6aa80",
     #local_path = "/home/<user>/projects/bazlets",
 )
 
diff --git a/src/main/java/com/google/gerrit/server/util/RefUpdater.java b/src/main/java/com/google/gerrit/server/util/RefUpdater.java
index 0433722..818d857 100644
--- a/src/main/java/com/google/gerrit/server/util/RefUpdater.java
+++ b/src/main/java/com/google/gerrit/server/util/RefUpdater.java
@@ -13,6 +13,7 @@
 // limitations under the License.
 package com.google.gerrit.server.util;
 
+import com.google.common.flogger.FluentLogger;
 import com.google.gerrit.reviewdb.client.Branch;
 import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.server.CurrentUser;
@@ -32,11 +33,9 @@
 import org.eclipse.jgit.lib.PersonIdent;
 import org.eclipse.jgit.lib.RefUpdate;
 import org.eclipse.jgit.lib.Repository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class RefUpdater {
-  private static final Logger log = LoggerFactory.getLogger(RefUpdater.class);
+  private static final FluentLogger log = FluentLogger.forEnclosingClass();
 
   public class Args {
     public final Branch.NameKey branch;
@@ -142,7 +141,8 @@
           initUpdate();
           handleResult(runUpdate());
         } catch (IOException err) {
-          log.error("RefUpdate failed: branch not updated: " + branch.get(), err);
+          log.atSevere().withCause(err).log(
+              "RefUpdate failed: branch not updated: %s", branch.get());
           throw err;
         } finally {
           repo.close();
diff --git a/src/main/java/com/googlesource/gerrit/plugins/batch/BatchCleaner.java b/src/main/java/com/googlesource/gerrit/plugins/batch/BatchCleaner.java
index b099fa6..e0fb174 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/batch/BatchCleaner.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/batch/BatchCleaner.java
@@ -17,6 +17,7 @@
 import static java.util.concurrent.TimeUnit.DAYS;
 import static java.util.concurrent.TimeUnit.MINUTES;
 
+import com.google.common.flogger.FluentLogger;
 import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.extensions.events.LifecycleListener;
 import com.google.gerrit.server.CurrentUser;
@@ -30,12 +31,10 @@
 import java.util.ArrayList;
 import java.util.concurrent.ScheduledFuture;
 import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /** Clean up expired batches daily. */
 public class BatchCleaner implements CancelableRunnable {
-  private static final Logger log = LoggerFactory.getLogger(BatchCleaner.class);
+  private static final FluentLogger log = FluentLogger.forEnclosingClass();
 
   public static class Lifecycle implements LifecycleListener {
     public static final long DEFAULT_START_MINUTES = MINUTES.convert(1, MINUTES);
@@ -119,7 +118,7 @@
     try {
       batches = list.getBatches();
     } catch (Exception e) {
-      log.error("getting list of batches to clean.", e);
+      log.atSevere().withCause(e).log("getting list of batches to clean.");
       // Ignore errors and hope someone notices the log file and fixes before the next run
       return;
     }
@@ -131,7 +130,7 @@
       try {
         remover.remove(batch.id);
       } catch (Exception e) {
-        log.error("cleaning batch: " + batch.id, e);
+        log.atSevere().withCause(e).log("cleaning batch: %s", batch.id);
         // Ignore errors and hope someone notices the log file and fixes before the next run
       }
     }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/batch/BatchSubmitter.java b/src/main/java/com/googlesource/gerrit/plugins/batch/BatchSubmitter.java
index 5da1531..0c9adb4 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/batch/BatchSubmitter.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/batch/BatchSubmitter.java
@@ -14,6 +14,7 @@
 
 package com.googlesource.gerrit.plugins.batch;
 
+import com.google.common.flogger.FluentLogger;
 import com.google.gerrit.extensions.restapi.AuthException;
 import com.google.gerrit.extensions.restapi.RestApiException;
 import com.google.gerrit.reviewdb.client.Branch;
@@ -49,11 +50,9 @@
 import org.eclipse.jgit.lib.ObjectReader;
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.revwalk.RevWalk;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class BatchSubmitter {
-  private static final Logger log = LoggerFactory.getLogger(BatchSubmitter.class);
+  private static final FluentLogger log = FluentLogger.forEnclosingClass();
 
   protected final ReviewDb db;
   protected final GitRepositoryManager repoManager;
@@ -156,7 +155,7 @@
     Change change = changeNotes.getChange();
     PatchSet ps = psUtil.get(db, changeNotes, psId);
     if (change == null || ps == null) {
-      log.error("" + psId + " is missing");
+      log.atSevere().log("%s is missing", psId);
       return;
     }
 
