diff --git a/src/main/java/org/apache/sling/commons/classloader/impl/Activator.java b/src/main/java/org/apache/sling/commons/classloader/impl/Activator.java
index 43cb138..5f9feb0 100644
--- a/src/main/java/org/apache/sling/commons/classloader/impl/Activator.java
+++ b/src/main/java/org/apache/sling/commons/classloader/impl/Activator.java
@@ -29,6 +29,8 @@
 import org.osgi.framework.SynchronousBundleListener;
 import org.osgi.service.packageadmin.PackageAdmin;
 import org.osgi.util.tracker.ServiceTracker;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * This activator registers the dynamic class loader manager.
@@ -39,6 +41,9 @@
 
     /** Package admin service name */
     private static String PACKAGE_ADMIN_NAME = PackageAdmin.class.getName();
+    
+    /** The logger. */
+    private final Logger logger = LoggerFactory.getLogger(this.getClass());
 
     /** A service tracker for the package admin. */
     private ServiceTracker packageAdminTracker;
@@ -115,8 +120,14 @@
             if ( ( event.getType() == BundleEvent.STARTED && !lazyBundle)
                  || (event.getType() == BundleEvent.STARTING && lazyBundle) ) {
                 reload = this.service.hasUnresolvedPackages(event.getBundle());
+                if (reload) {
+                    logger.debug("Dynamic Class Loader is reloaded because the new bundle '{}' provides previously unresolved packages", event.getBundle());
+                }
             } else if ( event.getType() == BundleEvent.UNRESOLVED || event.getType() == BundleEvent.RESOLVED ) {
                 reload = this.service.isBundleUsed(event.getBundle().getBundleId());
+                if (reload) {
+                    logger.debug("Dynamic Class Loader is reloaded because it has previously loaded classes from bundle '{}' which is no longer active", event.getBundle());
+                }
             } else {
                 reload = false;
             }
diff --git a/src/main/java/org/apache/sling/commons/classloader/impl/DynamicClassLoaderManagerFactory.java b/src/main/java/org/apache/sling/commons/classloader/impl/DynamicClassLoaderManagerFactory.java
index e6cd33a..9ab11be 100644
--- a/src/main/java/org/apache/sling/commons/classloader/impl/DynamicClassLoaderManagerFactory.java
+++ b/src/main/java/org/apache/sling/commons/classloader/impl/DynamicClassLoaderManagerFactory.java
@@ -26,6 +26,8 @@
 import org.osgi.framework.ServiceRegistration;
 import org.osgi.service.packageadmin.ExportedPackage;
 import org.osgi.service.packageadmin.PackageAdmin;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * This is the service factory for the dynamic class loader manager.
@@ -33,6 +35,9 @@
 public class DynamicClassLoaderManagerFactory
     implements ServiceFactory {
 
+    /** The logger. */
+    private final Logger logger = LoggerFactory.getLogger(this.getClass());
+
     /** The package admin. */
     private final PackageAdmin pckAdmin;
 
@@ -113,6 +118,7 @@
             if ( pcks != null ) {
                 for(final ExportedPackage pck : pcks ) {
                     if ( this.unresolvedPackages.contains(pck.getName()) ) {
+                        logger.debug("Bundle '{}' provides package '{}' which has been previously unsuccessfully requested!", bundle, pck.getName());
                         return true;
                     }
                 }
