diff --git a/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/ConfigInstaller.java b/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/ConfigInstaller.java
index c9b99ff..02cc7cb 100644
--- a/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/ConfigInstaller.java
+++ b/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/ConfigInstaller.java
@@ -157,7 +157,7 @@
             }
             catch (Exception e)
             {
-                Util.log( context, Util.getGlobalLogLevel(context), Logger.LOG_INFO, "Unable to save configuration", e );
+                Util.log( context, Logger.LOG_INFO, "Unable to save configuration", e );
             }
         }
     }
@@ -247,6 +247,13 @@
             {
                 config.setBundleLocation(null);
             }
+            if (old == null) {
+                Util.log(context, Logger.LOG_INFO, "Creating configuration from " + pid[0]
+                        + (pid[1] == null ? "" : "-" + pid[1]) + ".cfg", null);
+            } else {
+                Util.log(context, Logger.LOG_INFO, "Updating configuration from " + pid[0]
+                        + (pid[1] == null ? "" : "-" + pid[1]) + ".cfg", null);
+            }
             config.update(ht);
             return true;
         }
@@ -267,6 +274,8 @@
     boolean deleteConfig(File f) throws Exception
     {
         String pid[] = parsePid(f.getName());
+        Util.log(context, Logger.LOG_INFO, "Deleting configuration from " + pid[0]
+                + (pid[1] == null ? "" : "-" + pid[1]) + ".cfg", null);
         Configuration config = getConfiguration(toConfigKey(f), pid[0], pid[1]);
         config.delete();
         return true;
@@ -308,9 +317,6 @@
         Configuration oldConfiguration = findExistingConfiguration(fileName);
         if (oldConfiguration != null)
         {
-            Util.log(context, Util.getGlobalLogLevel(context),
-                Logger.LOG_DEBUG, "Updating configuration from " + pid
-                + (factoryPid == null ? "" : "-" + factoryPid) + ".cfg", null);
             return oldConfiguration;
         }
         else
diff --git a/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/DirectoryWatcher.java b/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/DirectoryWatcher.java
index 493b265..f2bfd99 100644
--- a/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/DirectoryWatcher.java
+++ b/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/DirectoryWatcher.java
@@ -969,7 +969,6 @@
             }
             installationFailures.remove(path);
             setArtifact(path, artifact);
-            log(Logger.LOG_INFO, "Installed " + path, null);
         }
         catch (Exception e)
         {
@@ -1020,6 +1019,8 @@
             }
         }
         is.reset();
+        Util.log(context, Logger.LOG_INFO, "Installing bundle " + sn
+                + " / " + v, null);
         Bundle b = context.installBundle(bundleLocation, is);
         Util.storeChecksum(b, checksum, context);
         
@@ -1069,13 +1070,12 @@
                         + ". The bundle has already been uninstalled", null);
                     return null;
                 }
-                log(Logger.LOG_DEBUG,
+                log(Logger.LOG_INFO,
                     "Uninstalling bundle "
                     + bundle.getBundleId() + " ("
                     + bundle.getSymbolicName() + ")", null);
                 bundle.uninstall();
             }
-            log(Logger.LOG_INFO, "Uninstalled " + path, null);
         }
         catch (Exception e)
         {
@@ -1109,6 +1109,8 @@
                         + ". The bundle has been uninstalled", null);
                     return null;
                 }
+                Util.log(context, Logger.LOG_INFO, "Updating bundle " + bundle.getSymbolicName()
+                        + " / " + bundle.getVersion(), null);
                 stopTransient(bundle);
                 Util.storeChecksum(bundle, artifact.getChecksum(), context);
                 InputStream in = (transformed != null)
@@ -1137,6 +1139,8 @@
                         + ". The bundle has been uninstalled", null);
                     return null;
                 }
+                Util.log(context, Logger.LOG_INFO, "Updating bundle " + bundle.getSymbolicName()
+                        + " / " + bundle.getVersion(), null);
                 stopTransient(bundle);
                 Util.storeChecksum(bundle, artifact.getChecksum(), context);
                 InputStream in = new FileInputStream(transformed != null ? transformed : path);
@@ -1149,7 +1153,6 @@
                     in.close();
                 }
             }
-            log(Logger.LOG_INFO, "Updated " + path, null);
         }
         catch (Throwable t)
         {
diff --git a/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/FileInstall.java b/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/FileInstall.java
index c5737f2..b432acc 100644
--- a/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/FileInstall.java
+++ b/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/FileInstall.java
@@ -86,7 +86,7 @@
             }
             catch (NoClassDefFoundError e)
             {
-                Util.log(context, Util.getGlobalLogLevel(context), Logger.LOG_DEBUG,
+                Util.log(context, Logger.LOG_DEBUG,
                         "ConfigAdmin is not available, some features will be disabled", e);
             }
 
diff --git a/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/Util.java b/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/Util.java
index 80227e3..4e19c91 100644
--- a/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/Util.java
+++ b/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/Util.java
@@ -76,8 +76,12 @@
      * @param e
      *            The throwable to log
      */
-    public static void log(BundleContext context, int logLevel,
-        int msgLevel, String message, Throwable e)
+    public static void log(BundleContext context, int msgLevel, String message, Throwable e)
+    {
+        getLogger(context).log(getGlobalLogLevel(context), msgLevel, message, e);
+    }
+
+    public static void log(BundleContext context, int logLevel, int msgLevel, String message, Throwable e)
     {
         getLogger(context).log(logLevel, msgLevel, message, e);
     }
diff --git a/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/WatcherScanner.java b/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/WatcherScanner.java
index b73c044..4f3bab1 100644
--- a/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/WatcherScanner.java
+++ b/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/WatcherScanner.java
@@ -150,8 +150,7 @@
 
         protected void log(int level, String message, Object... args) {
             String msg = String.format(message, args);
-            Util.log(bundleContext, Util.getGlobalLogLevel(bundleContext),
-                    level, msg, null);
+            Util.log(bundleContext, level, msg, null);
         }
 
     }
