diff --git a/http/sslfilter/src/main/java/org/apache/felix/http/sslfilter/internal/LogServiceTracker.java b/http/sslfilter/src/main/java/org/apache/felix/http/sslfilter/internal/LogServiceTracker.java
index ab06dbb..8f1effd 100644
--- a/http/sslfilter/src/main/java/org/apache/felix/http/sslfilter/internal/LogServiceTracker.java
+++ b/http/sslfilter/src/main/java/org/apache/felix/http/sslfilter/internal/LogServiceTracker.java
@@ -18,35 +18,55 @@
  */
 package org.apache.felix.http.sslfilter.internal;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Map;
+import java.util.TreeMap;
+
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
 import org.osgi.service.log.LogService;
 import org.osgi.util.tracker.ServiceTracker;
 
 /**
- * TODO - this implementation assumes that there is exactly one LogService
+ *
  *
  * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
  */
 public class LogServiceTracker extends ServiceTracker
 {
+    private final Map<ServiceReference, LogService> logServices = new TreeMap<ServiceReference, LogService>(Collections.reverseOrder());
+
     public LogServiceTracker(BundleContext context)
     {
         super(context, LogService.class.getName(), null);
     }
 
     @Override
-    public Object addingService(ServiceReference reference)
+    public Object addingService(final ServiceReference reference)
     {
-        LogService result = (LogService) super.addingService(reference);
-        SystemLogger.setLogService(result);
+        final LogService result = (LogService) super.addingService(reference);
+        if ( result != null ) {
+            synchronized ( logServices ) {
+                logServices.put(reference, result);
+                SystemLogger.setLogService(logServices.values().iterator().next());
+            }
+        }
         return result;
     }
 
     @Override
-    public void removedService(ServiceReference reference, Object service)
+    public void removedService(final ServiceReference reference, final Object service)
     {
-        SystemLogger.setLogService(null);
+        synchronized ( logServices ) {
+            logServices.remove(reference);
+            final Collection<LogService> services = logServices.values();
+            if ( services.isEmpty() ) {
+                SystemLogger.setLogService(null);
+            } else {
+                SystemLogger.setLogService(services.iterator().next());
+            }
+        }
         super.removedService(reference, service);
     }
 }
