diff --git a/src/main/java/com/ericsson/gerrit/plugins/eventslog/EventCleanerQueue.java b/src/main/java/com/ericsson/gerrit/plugins/eventslog/EventCleanerQueue.java
index b457018..66fcc81 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/eventslog/EventCleanerQueue.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/eventslog/EventCleanerQueue.java
@@ -14,6 +14,7 @@
 
 package com.ericsson.gerrit.plugins.eventslog;
 
+import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.extensions.events.LifecycleListener;
 import com.google.gerrit.server.git.WorkQueue;
 import com.google.inject.Inject;
@@ -23,16 +24,18 @@
 @Singleton
 public class EventCleanerQueue implements LifecycleListener {
   private final WorkQueue workQueue;
+  private final String pluginName;
   private ScheduledExecutorService pool;
 
   @Inject
-  public EventCleanerQueue(WorkQueue workQueue) {
+  public EventCleanerQueue(WorkQueue workQueue, @PluginName String pluginName) {
     this.workQueue = workQueue;
+    this.pluginName = pluginName;
   }
 
   @Override
   public void start() {
-    pool = workQueue.createQueue(1, "[events-log] Remove events");
+    pool = workQueue.createQueue(1, String.format("[%s] Remove events", pluginName));
   }
 
   @Override
diff --git a/src/main/java/com/ericsson/gerrit/plugins/eventslog/EventQueue.java b/src/main/java/com/ericsson/gerrit/plugins/eventslog/EventQueue.java
index 72c3c5a..4d2ba5d 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/eventslog/EventQueue.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/eventslog/EventQueue.java
@@ -14,6 +14,7 @@
 
 package com.ericsson.gerrit.plugins.eventslog;
 
+import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.extensions.events.LifecycleListener;
 import com.google.gerrit.server.git.WorkQueue;
 import com.google.inject.Inject;
@@ -22,17 +23,19 @@
 /** A queue for events to store. */
 public class EventQueue implements LifecycleListener {
   private final WorkQueue workQueue;
+  private final String pluginName;
   private ScheduledExecutorService pool;
 
   @Inject
-  EventQueue(WorkQueue workQueue) {
+  EventQueue(WorkQueue workQueue, @PluginName String pluginName) {
     this.workQueue = workQueue;
+    this.pluginName = pluginName;
   }
 
   /** {@inheritDoc} Create a new executor queue in WorkQueue for storing events. */
   @Override
   public void start() {
-    pool = workQueue.createQueue(1, "Store events");
+    pool = workQueue.createQueue(1, String.format("[%s] Store events", pluginName));
   }
 
   @Override
diff --git a/src/main/java/com/ericsson/gerrit/plugins/eventslog/sql/SQLStore.java b/src/main/java/com/ericsson/gerrit/plugins/eventslog/sql/SQLStore.java
index 8a06904..ba38c4e 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/eventslog/sql/SQLStore.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/eventslog/sql/SQLStore.java
@@ -23,6 +23,7 @@
 import com.ericsson.gerrit.plugins.eventslog.EventsLogException;
 import com.ericsson.gerrit.plugins.eventslog.ServiceUnavailableException;
 import com.google.gerrit.common.TimeUtil;
+import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.extensions.events.LifecycleListener;
 import com.google.gerrit.extensions.restapi.AuthException;
 import com.google.gerrit.reviewdb.client.Project;
@@ -66,6 +67,7 @@
   private boolean copyLocal;
   private final ScheduledExecutorService pool;
   private final PermissionBackend permissionBackend;
+  private final String pluginName;
   private ScheduledFuture<?> checkConnTask;
   private Path localPath;
 
@@ -77,7 +79,8 @@
       @LocalEventsDb SQLClient localEventsDb,
       @EventPool ScheduledExecutorService pool,
       PermissionBackend permissionBackend,
-      EventsLogCleaner eventsLogCleaner) {
+      EventsLogCleaner eventsLogCleaner,
+      @PluginName String pluginName) {
     this.maxAge = cfg.getMaxAge();
     this.maxTries = cfg.getMaxTries();
     this.waitTime = cfg.getWaitTime();
@@ -90,6 +93,7 @@
     this.pool = pool;
     this.permissionBackend = permissionBackend;
     this.localPath = cfg.getLocalStorePath();
+    this.pluginName = pluginName;
   }
 
   @Override
@@ -204,7 +208,7 @@
     if (!online) {
       checkConnTask =
           pool.scheduleWithFixedDelay(
-              new CheckConnectionTask(), 0, connectTime, TimeUnit.MILLISECONDS);
+              new CheckConnectionTask(pluginName), 0, connectTime, TimeUnit.MILLISECONDS);
     } else {
       cancelCheckConnectionTaskIfScheduled(false);
     }
@@ -245,7 +249,11 @@
   }
 
   class CheckConnectionTask implements Runnable {
-    CheckConnectionTask() {}
+    private final String taskName;
+
+    CheckConnectionTask(String prefix) {
+      this.taskName = String.format("[%s] Connect to database", prefix);
+    }
 
     @Override
     public void run() {
@@ -257,7 +265,7 @@
 
     @Override
     public String toString() {
-      return "(Events-log) Connect to database";
+      return taskName;
     }
 
     private boolean checkConnection() {
diff --git a/src/test/java/com/ericsson/gerrit/plugins/eventslog/sql/SQLStoreTest.java b/src/test/java/com/ericsson/gerrit/plugins/eventslog/sql/SQLStoreTest.java
index 96ce35d..e759637 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/eventslog/sql/SQLStoreTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/eventslog/sql/SQLStoreTest.java
@@ -69,6 +69,7 @@
   private static final String TERM_CONN_MSG = "terminating connection";
   private static final String MSG = "message";
   private static final String GENERIC_QUERY = "SELECT * FROM " + TABLE_NAME;
+  private static final String PLUGIN_NAME = "events-log";
 
   @Mock private Provider<CurrentUser> userProviderMock;
   @Mock private EventsLogConfig cfgMock;
@@ -169,7 +170,8 @@
             localEventsDb,
             poolMock,
             permissionBackendMock,
-            logCleanerMock);
+            logCleanerMock,
+            PLUGIN_NAME);
 
     store.start();
     store.storeEvent(mockEvent);
@@ -193,7 +195,8 @@
             localEventsDb,
             poolMock,
             permissionBackendMock,
-            logCleanerMock);
+            logCleanerMock,
+            PLUGIN_NAME);
 
     store.start();
     store.storeEvent(mockEvent);
@@ -214,7 +217,8 @@
             localEventsDb,
             poolMock,
             permissionBackendMock,
-            logCleanerMock);
+            logCleanerMock,
+            PLUGIN_NAME);
 
     store.start();
     store.storeEvent(mockEvent);
@@ -237,7 +241,8 @@
             localEventsDb,
             poolMock,
             permissionBackendMock,
-            logCleanerMock);
+            logCleanerMock,
+            PLUGIN_NAME);
 
     store.start();
     store.storeEvent(mockEvent);
@@ -257,7 +262,8 @@
             localEventsDb,
             poolMock,
             permissionBackendMock,
-            logCleanerMock);
+            logCleanerMock,
+            PLUGIN_NAME);
 
     store.start();
     store.storeEvent(mockEvent);
@@ -284,7 +290,8 @@
             localEventsDb,
             poolMock,
             permissionBackendMock,
-            logCleanerMock);
+            logCleanerMock,
+            PLUGIN_NAME);
 
     localEventsDb.createDBIfNotCreated();
     localEventsDb.storeEvent(mockEvent);
@@ -311,7 +318,8 @@
             localEventsDb,
             poolMock,
             permissionBackendMock,
-            logCleanerMock);
+            logCleanerMock,
+            PLUGIN_NAME);
 
     store.start();
     verify(localEventsDb).createDBIfNotCreated();
@@ -330,7 +338,8 @@
             localEventsDb,
             poolMock,
             permissionBackendMock,
-            logCleanerMock);
+            logCleanerMock,
+            PLUGIN_NAME);
 
     store.start();
     store.storeEvent(mockEvent);
@@ -351,7 +360,8 @@
             localEventsDb,
             poolMock,
             permissionBackendMock,
-            logCleanerMock);
+            logCleanerMock,
+            PLUGIN_NAME);
 
     store.start();
     store.storeEvent(mockEvent);
@@ -369,7 +379,8 @@
             localEventsDb,
             poolMock,
             permissionBackendMock,
-            logCleanerMock);
+            logCleanerMock,
+            PLUGIN_NAME);
     store.start();
   }
 
@@ -399,10 +410,12 @@
             localEventsDb,
             poolMock,
             permissionBackendMock,
-            logCleanerMock);
+            logCleanerMock,
+            PLUGIN_NAME);
 
     store.start();
-    poolMock.scheduleWithFixedDelay(store.new CheckConnectionTask(), 0, 0, TimeUnit.MILLISECONDS);
+    poolMock.scheduleWithFixedDelay(
+        store.new CheckConnectionTask(PLUGIN_NAME), 0, 0, TimeUnit.MILLISECONDS);
     verify(localEventsDb, times(2)).removeOldEvents(0);
   }
 
@@ -439,7 +452,8 @@
             localEventsDb,
             poolMock,
             permissionBackendMock,
-            logCleanerMock);
+            logCleanerMock,
+            PLUGIN_NAME);
 
     store.start();
     verify(eventsDb).queryOne();
