Index: trunk/src/org/openstreetmap/josm/actions/MergeLayerAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/MergeLayerAction.java	(revision 16068)
+++ trunk/src/org/openstreetmap/josm/actions/MergeLayerAction.java	(revision 16069)
@@ -90,5 +90,5 @@
                     }
 
-                    Logging.info(tr("{0} completed in {1}", actionName, stopwatch));
+                    Logging.info(stopwatch.toString(String.valueOf(actionName)));
                 });
             }
@@ -114,5 +114,5 @@
             if (layerMerged) {
                 getLayerManager().setActiveLayer(targetLayer);
-                Logging.info(tr("{0} completed in {1}", actionName, stopwatch));
+                Logging.info(stopwatch.toString(String.valueOf(actionName)));
             }
         });
Index: trunk/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java	(revision 16068)
+++ trunk/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java	(revision 16069)
@@ -1,6 +1,4 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.data.osm;
-
-import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.io.PrintWriter;
@@ -189,6 +187,5 @@
             StackTraceElement item = Thread.currentThread().getStackTrace()[2];
             String operation = getClass().getSimpleName() + '.' + item.getMethodName();
-            Logging.debug(tr("{0} completed in {1}",
-                    operation, stopwatch));
+            Logging.debug(stopwatch.toString(operation));
         }
     }
Index: trunk/src/org/openstreetmap/josm/data/validation/OsmValidator.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/OsmValidator.java	(revision 16068)
+++ trunk/src/org/openstreetmap/josm/data/validation/OsmValidator.java	(revision 16069)
@@ -608,9 +608,10 @@
     public static synchronized void initializeTests() {
         if (!testsInitialized) {
-            Logging.debug("Initializing validator tests");
+            final String message = "Initializing validator tests";
+            Logging.debug(message);
             final Stopwatch stopwatch = Stopwatch.createStarted();
             initializeTests(getTests());
             testsInitialized = true;
-            Logging.debug("Initializing validator tests completed in {0}", stopwatch);
+            Logging.debug(stopwatch.toString("Initializing validator tests"));
         }
     }
Index: trunk/src/org/openstreetmap/josm/data/validation/Test.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/Test.java	(revision 16068)
+++ trunk/src/org/openstreetmap/josm/data/validation/Test.java	(revision 16069)
@@ -198,5 +198,5 @@
         progressMonitor = null;
         if (stopwatch.elapsed() > 0) {
-            Logging.debug(tr("{0} completed in {1}", getName(), stopwatch));
+            Logging.debug(stopwatch.toString(getName()));
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/SplashScreen.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/SplashScreen.java	(revision 16068)
+++ trunk/src/org/openstreetmap/josm/gui/SplashScreen.java	(revision 16069)
@@ -164,4 +164,5 @@
             }
             if (stopwatch.elapsed() >= 0) {
+                Logging.debug(stopwatch.toString(name));
                 duration = tr(" ({0})", stopwatch);
             }
@@ -299,7 +300,4 @@
             taskOptional.ifPresent(task -> {
                 ((MeasurableTask) task).finish();
-                if (Logging.isDebugEnabled()) {
-                    Logging.debug(tr("{0} completed in {1}", title, ((MeasurableTask) task).duration));
-                }
                 listener.stateChanged(null);
             });
Index: trunk/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java	(revision 16068)
+++ trunk/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java	(revision 16069)
@@ -488,6 +488,5 @@
         // show some debug info
         if (Logging.isDebugEnabled() && !visibleSegments.isEmpty()) {
-            Logging.debug("gpxdraw::draw takes " +
-                         stopwatch +
+            Logging.debug(stopwatch.toString("gpxdraw::draw") +
                          "(" +
                          "segments= " + visibleSegments.size() +
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java	(revision 16068)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java	(revision 16069)
@@ -308,5 +308,5 @@
         }
         if (Logging.isDebugEnabled() || !source.isValid()) {
-            String message = "Initializing map style " + source.url + " completed in " + stopwatch;
+            String message = stopwatch.toString("Initializing map style " + source.url);
             if (!source.isValid()) {
                 Logging.warn(message + " (" + source.getErrors().size() + " errors, " + source.getWarnings().size() + " warnings)");
Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReader.java	(revision 16068)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReader.java	(revision 16069)
@@ -368,7 +368,5 @@
             }
         }
-        if (Logging.isDebugEnabled()) {
-            Logging.debug("Presets read in {0}", stopwatch);
-        }
+        Logging.debug(stopwatch.toString("Reading presets"));
         return tp;
     }
Index: trunk/src/org/openstreetmap/josm/tools/Stopwatch.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Stopwatch.java	(revision 16068)
+++ trunk/src/org/openstreetmap/josm/tools/Stopwatch.java	(revision 16069)
@@ -1,4 +1,6 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.tools;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 /**
@@ -44,3 +46,12 @@
         return Utils.getDurationString(Math.max(0, elapsed()));
     }
+
+    /**
+     * Formats the given task name and duration since start as i18n string
+     * @param taskName the task name
+     * @return the task name and duration since start as i18n string
+     */
+    public String toString(String taskName) {
+        return tr("{0} completed in {1}", taskName, toString());
+    }
 }
Index: trunk/src/org/openstreetmap/josm/tools/XmlUtils.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/XmlUtils.java	(revision 16068)
+++ trunk/src/org/openstreetmap/josm/tools/XmlUtils.java	(revision 16069)
@@ -87,5 +87,5 @@
         Logging.debug("Starting DOM parsing of {0}", is);
         Document result = newSafeDOMBuilder().parse(is);
-        Logging.debug("DOM parsing done in {0}", stopwatch);
+        Logging.debug(stopwatch.toString("DOM parsing"));
         return result;
     }
@@ -118,5 +118,5 @@
         Logging.debug("Starting SAX parsing of {0} using {1}", is, dh);
         newSafeSAXParser().parse(is, dh);
-        Logging.debug("SAX parsing done in {0}", stopwatch);
+        Logging.debug(stopwatch.toString("SAX parsing"));
     }
 
