From 809a3cad4a42df5324d002af1c8362cbd2f2bc00 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Tue, 30 Jun 2026 15:12:59 +0200 Subject: [PATCH] chore(android): address review comments Also add logging if unit test fails --- .../main/java/com/keyman/engine/util/KMLog.java | 14 +++++++++++--- .../java/com/keyman/engine/util/FileUtilsTest.java | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/android/KMEA/app/src/main/java/com/keyman/engine/util/KMLog.java b/android/KMEA/app/src/main/java/com/keyman/engine/util/KMLog.java index e6eb05a96e..633f5c853b 100644 --- a/android/KMEA/app/src/main/java/com/keyman/engine/util/KMLog.java +++ b/android/KMEA/app/src/main/java/com/keyman/engine/util/KMLog.java @@ -117,8 +117,8 @@ public final class KMLog { // Sentry does limit the size of messages... so let's just // keep 10 entries and call it a day. - int limit = Math.min(rawTrace.length, 10 + skipCount); if(rawTrace.length > skipCount) { + int limit = Math.min(rawTrace.length, 10 + skipCount); String[] trace = new String[limit - skipCount]; for (int i = skipCount; i < limit; i++) { trace[i-skipCount] = rawTrace[i].toString(); @@ -190,7 +190,7 @@ public final class KMLog { String errorMsg = ""; try { if (msg != null && !msg.isEmpty()) { - errorMsg = msg + "\n" + e.toString(); + errorMsg = msg + "\n" + e; } else if (e != null) { errorMsg = e.toString(); } @@ -206,6 +206,8 @@ public final class KMLog { } } + Log.e(tag, errorMsg); + if (!canLogToSentry()) { return; } @@ -215,12 +217,18 @@ public final class KMLog { tagDebugInfo(); try { if(obj != null && objName != null) { - Sentry.setTag(objName, obj.toString()); + Sentry.setExtra(objName, obj.toString()); } } catch(Exception innerE) { Sentry.captureException(innerE); } Sentry.captureException(e); + + if(obj != null && objName != null) { + // And remove the exception-specific tagged data, lest it also be + // tracked on subsequent errors not associated with the current call. + Sentry.removeExtra(objName); + } }); } } diff --git a/android/KMEA/app/src/test/java/com/keyman/engine/util/FileUtilsTest.java b/android/KMEA/app/src/test/java/com/keyman/engine/util/FileUtilsTest.java index 5118159c9b..9541a59afe 100644 --- a/android/KMEA/app/src/test/java/com/keyman/engine/util/FileUtilsTest.java +++ b/android/KMEA/app/src/test/java/com/keyman/engine/util/FileUtilsTest.java @@ -23,7 +23,7 @@ public class FileUtilsTest { List logs = ShadowLog.getLogs(); // The logs contain type 4, but we only care about type 6 for connection messages - Assert.assertEquals(2, logs.size()); + Assert.assertEquals("Size did not match 2: " + logs.toString(), 2, logs.size()); Assert.assertEquals("Connection", logs.get(0).tag); Assert.assertEquals("Initialization failed:\njava.net.MalformedURLException: no protocol: invalidURL", logs.get(0).msg);