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 f2bfd99..c6a8f3d 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
@@ -91,6 +91,7 @@
     public final static String POLL = "felix.fileinstall.poll";
     public final static String DIR = "felix.fileinstall.dir";
     public final static String LOG_LEVEL = "felix.fileinstall.log.level";
+    public final static String LOG_DEFAULT = "felix.fileinstall.log.default";
     public final static String TMPDIR = "felix.fileinstall.tmpdir";
     public final static String FILTER = "felix.fileinstall.filter";
     public final static String START_NEW_BUNDLES = "felix.fileinstall.bundles.new.start";
@@ -110,6 +111,9 @@
     public final static String SCOPE_MANAGED = "managed";
     public final static String SCOPE_ALL = "all";
 
+    public final static String LOG_STDOUT = "stdout";
+    public final static String LOG_JUL = "jul";
+
     static final SecureRandom random = new SecureRandom();
 
     final File javaIoTmpdir = new File(System.getProperty("java.io.tmpdir"));
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 4e19c91..db924e5 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
@@ -30,6 +30,7 @@
 import java.util.Set;
 import java.util.jar.JarFile;
 import java.util.jar.JarOutputStream;
+import java.util.logging.Level;
 import java.util.zip.Deflater;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipOutputStream;
@@ -99,7 +100,7 @@
         }
         catch (Throwable t)
         {
-            logger = new StdOutLogger();
+            logger = new DefaultLogger(context);
         }
         return logger;
     }
@@ -117,8 +118,21 @@
         void log(int logLevel, int msgLevel, String message, Throwable throwable);
     }
 
-    static class StdOutLogger implements Logger
+    static class DefaultLogger implements Logger
     {
+        protected BundleContext context;
+        private final String logDefault;
+
+        DefaultLogger(BundleContext context)
+        {
+            this.context = context;
+            String s = context.getProperty(DirectoryWatcher.LOG_DEFAULT);
+            s = (s == null)
+                    ? System.getProperty(DirectoryWatcher.LOG_DEFAULT.toUpperCase().replace('.', '_'))
+                    : s;
+            logDefault = (s == null) ? DirectoryWatcher.LOG_STDOUT : s;
+        }
+
         public boolean isValidLogger(BundleContext context)
         {
             return true;
@@ -131,22 +145,37 @@
             // level.
             if ((logLevel > 0) && (msgLevel <= logLevel))
             {
-                System.out.println(message + ((throwable == null) ? "" : ": " + throwable));
-                if (throwable != null)
+                if (DirectoryWatcher.LOG_JUL.equals(logDefault))
                 {
-                    throwable.printStackTrace(System.out);
+                    Level lvl;
+                    switch (msgLevel)
+                    {
+                        case 1:  lvl = Level.SEVERE; break;
+                        case 2:  lvl = Level.WARNING; break;
+                        case 3:  lvl = Level.INFO; break;
+                        case 4:  lvl = Level.FINE; break;
+                        default: lvl = Level.FINEST; break;
+                    }
+                    java.util.logging.Logger logger = java.util.logging.Logger.getLogger("fileinstall");
+                    logger.log(lvl, message, throwable);
+                }
+                else
+                {
+                    System.out.println(message + ((throwable == null) ? "" : ": " + throwable));
+                    if (throwable != null)
+                    {
+                        throwable.printStackTrace(System.out);
+                    }
                 }
             }
         }
     }
 
-    static class OsgiLogger extends StdOutLogger
+    static class OsgiLogger extends DefaultLogger
     {
-        private BundleContext context;
-
         OsgiLogger(BundleContext context)
         {
-            this.context = context;
+            super(context);
             // Now make sure we can access the LogService class
             try
             {
