Index: /trunk/src/org/openstreetmap/josm/io/MessageNotifier.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/MessageNotifier.java	(revision 6694)
+++ /trunk/src/org/openstreetmap/josm/io/MessageNotifier.java	(revision 6695)
@@ -59,5 +59,5 @@
         public void run() {
             try {
-                final UserInfo userInfo = new OsmServerUserInfoReader().fetchUserInfo(NullProgressMonitor.INSTANCE);
+                final UserInfo userInfo = new OsmServerUserInfoReader().fetchUserInfo(NullProgressMonitor.INSTANCE, tr("get number of unread messages"));
                 final int unread = userInfo.getUnreadMessages();
                 if (unread > 0 && unread != lastUnreadCount) {
Index: /trunk/src/org/openstreetmap/josm/io/OsmServerReader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmServerReader.java	(revision 6694)
+++ /trunk/src/org/openstreetmap/josm/io/OsmServerReader.java	(revision 6695)
@@ -47,12 +47,26 @@
      * @param urlStr The url to connect to.
      * @param progressMonitor progress monitoring and abort handler
-     * @return An reader reading the input stream (servers answer) or <code>null</code>.
+     * @return A reader reading the input stream (servers answer) or <code>null</code>.
      * @throws OsmTransferException thrown if data transfer errors occur
      */
     protected InputStream getInputStream(String urlStr, ProgressMonitor progressMonitor) throws OsmTransferException  {
+        return getInputStream(urlStr, progressMonitor, null);
+    }
+
+    /**
+     * Open a connection to the given url and return a reader on the input stream
+     * from that connection. In case of user cancel, return <code>null</code>.
+     * Relative URL's are directed to API base URL.
+     * @param urlStr The url to connect to.
+     * @param progressMonitor progress monitoring and abort handler
+     * @param reason The reason to show on console. Can be {@code null} if no reason is given
+     * @return A reader reading the input stream (servers answer) or <code>null</code>.
+     * @throws OsmTransferException thrown if data transfer errors occur
+     */
+    protected InputStream getInputStream(String urlStr, ProgressMonitor progressMonitor, String reason) throws OsmTransferException  {
         try {
             api.initialize(progressMonitor);
-            urlStr = urlStr.startsWith("http") ? urlStr : (getBaseUrl() + urlStr);
-            return getInputStreamRaw(urlStr, progressMonitor);
+            String url = urlStr.startsWith("http") ? urlStr : (getBaseUrl() + urlStr);
+            return getInputStreamRaw(url, progressMonitor, reason);
         } finally {
             progressMonitor.invalidate();
@@ -61,5 +75,5 @@
 
     /**
-     * Retrun the base URL for relative URL requests
+     * Return the base URL for relative URL requests
      * @return base url of API
      */
@@ -77,4 +91,17 @@
      */
     protected InputStream getInputStreamRaw(String urlStr, ProgressMonitor progressMonitor) throws OsmTransferException {
+        return getInputStreamRaw(urlStr, progressMonitor, null);
+    }
+    
+    /**
+     * Open a connection to the given url and return a reader on the input stream
+     * from that connection. In case of user cancel, return <code>null</code>.
+     * @param urlStr The exact url to connect to.
+     * @param progressMonitor progress monitoring and abort handler
+     * @param reason The reason to show on console. Can be {@code null} if no reason is given
+     * @return An reader reading the input stream (servers answer) or <code>null</code>.
+     * @throws OsmTransferException thrown if data transfer errors occur
+     */
+    protected InputStream getInputStreamRaw(String urlStr, ProgressMonitor progressMonitor, String reason) throws OsmTransferException {
         try {
             URL url = null;
@@ -107,5 +134,9 @@
 
             try {
-                Main.info("GET " + url);
+                if (reason != null && !reason.isEmpty()) {
+                    Main.info("GET " + url + " (" + reason + ")");
+                } else {
+                    Main.info("GET " + url);
+                }
                 activeConnection.connect();
             } catch (Exception e) {
Index: /trunk/src/org/openstreetmap/josm/io/OsmServerUserInfoReader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmServerUserInfoReader.java	(revision 6694)
+++ /trunk/src/org/openstreetmap/josm/io/OsmServerUserInfoReader.java	(revision 6695)
@@ -144,9 +144,27 @@
     }
 
+    /**
+     * Fetches user info, without explicit reason.
+     * @param monitor The progress monitor
+     * @return The user info
+     * @throws OsmTransferException if something goes wrong
+     */
     public UserInfo fetchUserInfo(ProgressMonitor monitor) throws OsmTransferException {
+        return fetchUserInfo(monitor, null);
+    }
+
+    /**
+     * Fetches user info, with an explicit reason.
+     * @param monitor The progress monitor
+     * @param reason The reason to show on console. Can be {@code null} if no reason is given
+     * @return The user info
+     * @throws OsmTransferException if something goes wrong
+     * @since 6695
+     */
+    public UserInfo fetchUserInfo(ProgressMonitor monitor, String reason) throws OsmTransferException {
         try {
             monitor.beginTask("");
             monitor.indeterminateSubTask(tr("Reading user info ..."));
-            InputStream in = getInputStream("user/details", monitor.createSubTaskMonitor(1, true));
+            InputStream in = getInputStream("user/details", monitor.createSubTaskMonitor(1, true), reason);
             return buildFromXML(
                     DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(in)
