From 46664544821f2a1bf0de1e45652d259a0e9c9aaa Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Tue, 11 Sep 2012 19:50:59 +0000
Subject: [PATCH] improve dup log message

---
 apps/routerconsole/java/bundle-messages.sh    |  1 +
 .../src/net/i2p/util/LogRecordFormatter.java  |  2 +-
 core/java/src/net/i2p/util/LogWriter.java     | 32 +++++++++++++------
 3 files changed, 25 insertions(+), 10 deletions(-)

diff --git a/apps/routerconsole/java/bundle-messages.sh b/apps/routerconsole/java/bundle-messages.sh
index ad257b167e..3d4001a971 100755
--- a/apps/routerconsole/java/bundle-messages.sh
+++ b/apps/routerconsole/java/bundle-messages.sh
@@ -44,6 +44,7 @@ fi
 # list specific files in core/ and router/ here, so we don't scan the whole tree
 ROUTERFILES="\
    ../../../core/java/src/net/i2p/data/DataHelper.java \
+   ../../../core/java/src/net/i2p/util/LogWriter.java \
    ../../../router/java/src/net/i2p/router/tasks/CoalesceStatsEvent.java \
    ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java \
    ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java \
diff --git a/core/java/src/net/i2p/util/LogRecordFormatter.java b/core/java/src/net/i2p/util/LogRecordFormatter.java
index 58d08af74a..01fa3298f2 100644
--- a/core/java/src/net/i2p/util/LogRecordFormatter.java
+++ b/core/java/src/net/i2p/util/LogRecordFormatter.java
@@ -87,7 +87,7 @@ class LogRecordFormatter {
         return toString(logRecord.getThreadName(), MAX_THREAD_LENGTH);
     }
 
-    private static String getWhen(LogManager manager, LogRecord logRecord) {
+    public static String getWhen(LogManager manager, LogRecord logRecord) {
         return manager.getDateFormat().format(new Date(logRecord.getDate()));
     }
 
diff --git a/core/java/src/net/i2p/util/LogWriter.java b/core/java/src/net/i2p/util/LogWriter.java
index 12706ba4c0..3d4f160d45 100644
--- a/core/java/src/net/i2p/util/LogWriter.java
+++ b/core/java/src/net/i2p/util/LogWriter.java
@@ -81,20 +81,15 @@ class LogWriter implements Runnable {
                         dupCount++;
                     } else {
                         if (dupCount > 0) {
-                            if (dupCount == 1)
-                                writeRecord("*** 1 similar message omitted\n");
-                            else
-                                writeRecord("*** " + dupCount + " similar messages omitted\n");
+                            writeRecord(dupMessage(dupCount, last));
                             dupCount = 0;
                         }
-                        last = rec;
                         writeRecord(rec);
                     }
+                    last = rec;
                 }
-                if (dupCount == 1)
-                    writeRecord("*** 1 similar message omitted\n");
-                else if (dupCount > 0)
-                    writeRecord("*** " + dupCount + " similar messages omitted\n");
+                if (dupCount > 0)
+                    writeRecord(dupMessage(dupCount, last));
                 try {
                     if (_currentOut != null)
                         _currentOut.flush();
@@ -116,7 +111,26 @@ class LogWriter implements Runnable {
             }
         }
     }
+
+    /**
+     *  Write a msg with the date stamp of the last duplicate
+     *  @since 0.9.3
+     */
+    private String dupMessage(int dupCount, LogRecord lastRecord) {
+        return LogRecordFormatter.getWhen(_manager, lastRecord) + " ^^^ " +
+               _(dupCount, "1 similar message omitted", "{0} similar messages omitted") + " ^^^\n";
+    }
     
+    private static final String BUNDLE_NAME = "net.i2p.router.web.messages";
+
+    /**
+     *  gettext
+     *  @since 0.9.3
+     */
+    private String _(int a, String b, String c) {
+        return Translate.getString(a, b, c, _manager.getContext(), BUNDLE_NAME);
+    }
+
     public String currentFile() {
         return _currentFile != null ? _currentFile.getAbsolutePath() : "uninitialized";
     }
-- 
GitLab