diff --git a/src/main/java/com/ericsson/gerrit/plugins/heartbeat/HeartbeatConfig.java b/src/main/java/com/ericsson/gerrit/plugins/heartbeat/HeartbeatConfig.java
index 4031a4e..24d30e0 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/heartbeat/HeartbeatConfig.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/heartbeat/HeartbeatConfig.java
@@ -14,6 +14,7 @@
 
 package com.ericsson.gerrit.plugins.heartbeat;
 
+import com.google.common.flogger.FluentLogger;
 import com.google.gerrit.server.config.SitePaths;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
@@ -22,13 +23,11 @@
 import org.eclipse.jgit.errors.ConfigInvalidException;
 import org.eclipse.jgit.storage.file.FileBasedConfig;
 import org.eclipse.jgit.util.FS;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /** Plugin-specific config file data loader and holder. */
 @Singleton
 public class HeartbeatConfig {
-  private static final Logger logger = LoggerFactory.getLogger(HeartbeatConfig.class);
+  private static final FluentLogger logger = FluentLogger.forEnclosingClass();
 
   public static final int DEFAULT_DELAY = 15000;
   public static final String DELAY_KEY = "delay";
@@ -52,7 +51,7 @@
   private void load(File configPath) throws ConfigInvalidException, IOException {
     FileBasedConfig cfg = new FileBasedConfig(configPath, FS.DETECTED);
     if (!cfg.getFile().exists() || cfg.getFile().length() == 0) {
-      logger.debug("No {} or empty; using all default values", cfg.getFile());
+      logger.atFine().log("No %s or empty; using all default values", cfg.getFile());
       return;
     }
 
diff --git a/src/main/java/com/ericsson/gerrit/plugins/heartbeat/HeartbeatDaemon.java b/src/main/java/com/ericsson/gerrit/plugins/heartbeat/HeartbeatDaemon.java
index 615b21f..9115e0a 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/heartbeat/HeartbeatDaemon.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/heartbeat/HeartbeatDaemon.java
@@ -14,6 +14,7 @@
 
 package com.ericsson.gerrit.plugins.heartbeat;
 
+import com.google.common.flogger.FluentLogger;
 import com.google.gerrit.extensions.events.LifecycleListener;
 import com.google.gerrit.extensions.registration.DynamicItem;
 import com.google.gerrit.server.events.EventDispatcher;
@@ -23,14 +24,12 @@
 import com.google.inject.Singleton;
 import java.util.Timer;
 import java.util.TimerTask;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /** Timer-based daemon doing the actual heartbeat task. */
 @Singleton
 public class HeartbeatDaemon implements LifecycleListener {
 
-  private static final Logger logger = LoggerFactory.getLogger(HeartbeatDaemon.class);
+  private static final FluentLogger logger = FluentLogger.forEnclosingClass();
   private static final String HEARTBEAT_THREAD_NAME = "StreamEventHeartbeat";
   private final DynamicItem<EventDispatcher> dispatcher;
   private final HeartbeatConfig config;
@@ -52,13 +51,14 @@
   @Override
   public void start() {
     timer.schedule(new HeartbeatTask(), 0, config.getDelay());
-    logger.info("Initialized to send heartbeat event every {} milliseconds", config.getDelay());
+    logger.atInfo().log(
+        "Initialized to send heartbeat event every %d milliseconds", config.getDelay());
   }
 
   @Override
   public void stop() {
     timer.cancel();
-    logger.info("Stopped sending heartbeat event");
+    logger.atInfo().log("Stopped sending heartbeat event");
   }
 
   private class HeartbeatTask extends TimerTask {
@@ -67,7 +67,7 @@
       try {
         dispatcher.get().postEvent(new HeartbeatEvent());
       } catch (OrmException | PermissionBackendException e) {
-        logger.error("Failed to post hearbeat event: " + e.getMessage(), e);
+        logger.atSevere().withCause(e).log("Failed to post heartbeat event");
       }
     }
   }
