diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusLogger.java b/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusLogger.java
index 39d447d..1cad450 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusLogger.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusLogger.java
@@ -70,12 +70,9 @@ public final class StatusLogger extends AbstractLogger {
     @SuppressWarnings("NonSerializableFieldInSerializableClass") // ReentrantLock is Serializable
     private final Lock msgLock = new ReentrantLock();
 
-    private int listenersLevel;
-
     private StatusLogger() {
         this.logger = new SimpleLogger("StatusLogger", Level.ERROR, false, true, false, false, Strings.EMPTY, null, PROPS,
             System.err);
-        this.listenersLevel = Level.toLevel(DEFAULT_STATUS_LEVEL, Level.WARN).intLevel();
     }
 
     /**
@@ -98,10 +95,6 @@ public final class StatusLogger extends AbstractLogger {
         listenersLock.writeLock().lock();
         try {
             listeners.add(listener);
-            final Level lvl = listener.getStatusLevel();
-            if (listenersLevel < lvl.intLevel()) {
-                listenersLevel = lvl.intLevel();
-            }
         } finally {
             listenersLock.writeLock().unlock();
         }
@@ -116,14 +109,6 @@ public final class StatusLogger extends AbstractLogger {
         listenersLock.writeLock().lock();
         try {
             listeners.remove(listener);
-            int lowest = Level.toLevel(DEFAULT_STATUS_LEVEL, Level.WARN).intLevel();
-            for (final StatusListener l : listeners) {
-                final int level = l.getStatusLevel().intLevel();
-                if (lowest < level) {
-                    lowest = level;
-                }
-            }
-            listenersLevel = lowest;
         } finally {
             listenersLock.writeLock().unlock();
         }
@@ -270,12 +255,26 @@ public final class StatusLogger extends AbstractLogger {
     @Override
     public boolean isEnabled(final Level level, final Marker marker) {
         if (listeners.size() > 0) {
-            return listenersLevel >= level.intLevel();
+            return getMaxIntLevel() >= level.intLevel();
         }
         return logger.isEnabled(level, marker);
     }
 
     /**
+     * Get the maximum level of all registered listeners
+     *
+     * @return maxLevel
+     */
+    private int getMaxIntLevel() {
+        int maxLevel = Level.toLevel(DEFAULT_STATUS_LEVEL, Level.WARN).intLevel();
+        for (StatusListener listener : listeners) {
+            int lvl = listener.getStatusLevel().intLevel();
+            maxLevel = Math.max(maxLevel, lvl);
+        }
+        return maxLevel;
+    }
+
+    /**
      * Queue for status events.
      * @param <E> Object type to be stored in the queue.
      */
