Index: trunk/src/org/openstreetmap/josm/Main.java
===================================================================
--- trunk/src/org/openstreetmap/josm/Main.java	(revision 6729)
+++ trunk/src/org/openstreetmap/josm/Main.java	(revision 6730)
@@ -214,5 +214,5 @@
 
     /**
-     * Logging level (4 = debug, 3 = info, 2 = warn, 1 = error, 0 = none).
+     * Logging level (5 = trace, 4 = debug, 3 = info, 2 = warn, 1 = error, 0 = none).
      * @since 6248
      */
@@ -265,4 +265,17 @@
         if (msg != null && !msg.isEmpty()) {
             System.out.println(tr("DEBUG: {0}", msg));
+        }
+    }
+
+    /**
+     * Prints a trace message if logging is on.
+     * @param msg The message to print.
+     */
+    public static void trace(String msg) {
+        if (logLevel < 5)
+            return;
+        if (msg != null && !msg.isEmpty()) {
+            System.out.print("TRACE: ");
+            System.out.println(msg);
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/FileDrop.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/FileDrop.java	(revision 6729)
+++ trunk/src/org/openstreetmap/josm/gui/FileDrop.java	(revision 6730)
@@ -130,5 +130,5 @@
             {   @Override
                 public void dragEnter( DropTargetDragEvent evt )
-            {       Main.debug("FileDrop: dragEnter event." );
+            {       Main.trace("FileDrop: dragEnter event." );
 
             // Is this an acceptable drag event?
@@ -139,17 +139,17 @@
                 {   JComponent jc = (JComponent) c;
                 normalBorder = jc.getBorder();
-                Main.debug("FileDrop: normal border saved." );
+                Main.trace("FileDrop: normal border saved." );
                 jc.setBorder( dragBorder );
-                Main.debug("FileDrop: drag border set." );
+                Main.trace("FileDrop: drag border set." );
                 }   // end if: JComponent
 
                 // Acknowledge that it's okay to enter
                 evt.acceptDrag( DnDConstants.ACTION_COPY );
-                Main.debug("FileDrop: event accepted." );
+                Main.trace("FileDrop: event accepted." );
             }   // end if: drag ok
             else
             {   // Reject the drag event
                 evt.rejectDrag();
-                Main.debug("FileDrop: event rejected." );
+                Main.trace("FileDrop: event rejected." );
             }   // end else: drag not ok
             }   // end dragEnter
@@ -163,5 +163,5 @@
             @Override
             public void drop( DropTargetDropEvent evt )
-            {   Main.debug("FileDrop: drop event." );
+            {   Main.trace("FileDrop: drop event." );
             try
             {   // Get whatever was dropped
@@ -173,5 +173,5 @@
                     // Say we'll take it.
                     evt.acceptDrop ( DnDConstants.ACTION_COPY );
-                    Main.debug("FileDrop: file list accepted." );
+                    Main.trace("FileDrop: file list accepted." );
 
                     // Get a useful list
@@ -188,5 +188,5 @@
                     // Mark that drop is completed.
                     evt.getDropTargetContext().dropComplete(true);
-                    Main.debug("FileDrop: drop complete." );
+                    Main.trace("FileDrop: drop complete." );
                 }   // end if: file list
                 else // this section will check for a reader flavor.
@@ -200,5 +200,5 @@
                             // Say we'll take it.
                             evt.acceptDrop(DnDConstants.ACTION_COPY);
-                            Main.debug("FileDrop: reader accepted.");
+                            Main.trace("FileDrop: reader accepted.");
 
                             Reader reader = flavor.getReaderForText(tr);
@@ -212,5 +212,5 @@
                             // Mark that drop is completed.
                             evt.getDropTargetContext().dropComplete(true);
-                            Main.debug("FileDrop: drop complete.");
+                            Main.trace("FileDrop: drop complete.");
                             handled = true;
                             break;
@@ -218,5 +218,5 @@
                     }
                     if(!handled){
-                        Main.debug("FileDrop: not a file list or reader - abort." );
+                        Main.trace("FileDrop: not a file list or reader - abort." );
                         evt.rejectDrop();
                     }
@@ -341,13 +341,13 @@
         {   @Override
             public void hierarchyChanged( HierarchyEvent evt )
-        {   Main.debug("FileDrop: Hierarchy changed." );
+        {   Main.trace("FileDrop: Hierarchy changed." );
         Component parent = c.getParent();
         if( parent == null )
         {   c.setDropTarget( null );
-        Main.debug("FileDrop: Drop target cleared from component." );
+        Main.trace("FileDrop: Drop target cleared from component." );
         }   // end if: null parent
         else
         {   new DropTarget(c, dropListener);
-        Main.debug("FileDrop: Drop target added to component." );
+        Main.trace("FileDrop: Drop target added to component." );
         }   // end else: parent not null
         }   // end hierarchyChanged
@@ -396,8 +396,8 @@
     // show data flavors
     if( flavors.length == 0 ) {
-        Main.debug("FileDrop: no data flavors." );
+        Main.trace("FileDrop: no data flavors." );
     }
     for( i = 0; i < flavors.length; i++ ) {
-        Main.debug(flavors[i].toString() );
+        Main.trace(flavors[i].toString() );
     }
 
@@ -431,5 +431,5 @@
     {   // Make sure we support dnd.
         if (supportsDnD()) {
-            Main.debug("FileDrop: Removing drag-and-drop hooks.");
+            Main.trace("FileDrop: Removing drag-and-drop hooks.");
             c.setDropTarget(null);
             if (recursive && (c instanceof Container)) {
Index: trunk/src/org/openstreetmap/josm/gui/MainApplication.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 6729)
+++ trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 6730)
@@ -122,4 +122,5 @@
                 "\t--language=<language>                     "+tr("Set the language")+"\n\n"+
                 "\t--version                                 "+tr("Displays the JOSM version and exits")+"\n\n"+
+                "\t--debug                                   "+tr("Print debugging messages to console")+"\n\n"+
                 tr("options provided as Java system properties")+":\n"+
                 "\t-Djosm.home="+tr("/PATH/TO/JOSM/FOLDER/         ")+tr("Change the folder for all user settings")+"\n\n"+
@@ -149,4 +150,6 @@
         /** --version                                 Displays the JOSM version and exits */
         VERSION(false),
+        /** --debug                                   Print debugging messages to console */
+        DEBUG(false),
         /** --language=<language>                     Set the language */
         LANGUAGE(true),
@@ -316,4 +319,9 @@
         }
 
+        if (args.containsKey(Option.DEBUG)) {
+            logLevel = 4;
+            Main.debug(tr("Print debugging messages to console"));
+        }
+
         Main.pref.init(args.containsKey(Option.RESET_PREFERENCES));
 
