From 80da90fad81de8c2b53ff75908a4d31da7ee554c Mon Sep 17 00:00:00 2001 From: Anton Keks Date: Tue, 12 Jan 2016 22:56:13 +0200 Subject: [PATCH] report first stack frame element to GA in case of unexpected exceptions --- src/net/azib/ipscan/util/GoogleAnalytics.java | 8 +++++++- test/net/azib/ipscan/util/GoogleAnalyticsTest.java | 14 ++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 test/net/azib/ipscan/util/GoogleAnalyticsTest.java diff --git a/src/net/azib/ipscan/util/GoogleAnalytics.java b/src/net/azib/ipscan/util/GoogleAnalytics.java index da9ed279..4eec45d2 100644 --- a/src/net/azib/ipscan/util/GoogleAnalytics.java +++ b/src/net/azib/ipscan/util/GoogleAnalytics.java @@ -48,7 +48,13 @@ public class GoogleAnalytics { } public void report(Throwable e) { - report("exception", e.toString()); + report("exception", extractFirstStackFrame(e)); + } + + static String extractFirstStackFrame(Throwable e) { + StackTraceElement[] stackTrace = e.getStackTrace(); + return e.toString() + (stackTrace.length == 0 ? "" : "\n" + + stackTrace[0].getClassName() + "." + stackTrace[0].getMethodName() + ":" + stackTrace[0].getLineNumber()); } public void asyncReport(final String screen) { diff --git a/test/net/azib/ipscan/util/GoogleAnalyticsTest.java b/test/net/azib/ipscan/util/GoogleAnalyticsTest.java new file mode 100644 index 00000000..1d82905b --- /dev/null +++ b/test/net/azib/ipscan/util/GoogleAnalyticsTest.java @@ -0,0 +1,14 @@ +package net.azib.ipscan.util; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class GoogleAnalyticsTest { + @Test + public void extractFirstStackFrame() throws Exception { + assertEquals("java.lang.RuntimeException: Kaboom\n" + + "net.azib.ipscan.util.GoogleAnalyticsTest.extractFirstStackFrame:10", + GoogleAnalytics.extractFirstStackFrame(new RuntimeException("Kaboom"))); + } +} \ No newline at end of file