From 0a7e37910e600a94066d8a4f57b408c4cd610c03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Bone=CC=81r?= Date: Wed, 1 Feb 2012 15:46:40 +0100 Subject: [PATCH 01/20] Added stack trace to the logging of remote client/server errors. Added helper methods to make a string representation of stack trace to AkkaException object. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jonas Bonér --- .../src/main/scala/akka/AkkaException.scala | 40 +++++++------ .../scala/akka/remote/RemoteTransport.scala | 56 +++++-------------- 2 files changed, 38 insertions(+), 58 deletions(-) diff --git a/akka-actor/src/main/scala/akka/AkkaException.scala b/akka-actor/src/main/scala/akka/AkkaException.scala index eb4a1cea8e..7a6ba39daa 100644 --- a/akka-actor/src/main/scala/akka/AkkaException.scala +++ b/akka-actor/src/main/scala/akka/AkkaException.scala @@ -7,6 +7,26 @@ package akka import akka.actor.newUuid import java.net.{ InetAddress, UnknownHostException } +object AkkaException { + val hostname = try InetAddress.getLocalHost.getHostAddress catch { case e: UnknownHostException ⇒ "unknown" } + + def toStringWithStackTrace(throwable: Throwable): String = { + if (throwable eq null) "Unknown Exception" + throwable match { + case ae: AkkaException ⇒ ae.toLongString + case e ⇒ "%s:%s\n%s" format (e.getClass.getName, e.getMessage, stackTraceToString(e)) + } + } + + def stackTraceToString(throwable: Throwable): String = { + val trace = throwable.getStackTrace + val sb = new StringBuilder + for (i ← 0 until trace.length) + sb.append("\tat %s\n" format trace(i)) + sb.toString + } +} + /** * Akka base Exception. Each Exception gets: *