diff --git a/akka-actor/src/main/scala/akka/AkkaException.scala b/akka-actor/src/main/scala/akka/AkkaException.scala
index e60d2c448c..748df1ced0 100644
--- a/akka-actor/src/main/scala/akka/AkkaException.scala
+++ b/akka-actor/src/main/scala/akka/AkkaException.scala
@@ -5,25 +5,33 @@
package akka
import akka.actor.newUuid
-
-import java.io.{StringWriter, PrintWriter}
import java.net.{InetAddress, UnknownHostException}
/**
* Akka base Exception. Each Exception gets:
*
- * - a UUID for tracking purposes
- * - a message including exception name, uuid, original message and the stacktrace
- * - a method 'log' that will log the exception once and only once
+ * - a uuid for tracking purposes
+ * - toString that includes exception name, message, uuid, and the stacktrace
*
*
* @author Jonas Bonér
*/
-@serializable abstract class AkkaException(message: String = "") extends {
- val exceptionName = getClass.getName
+class AkkaException(message: String = "") extends RuntimeException(message) with Serializable {
val uuid = "%s_%s".format(AkkaException.hostname, newUuid)
-} with RuntimeException(message) {
- override lazy val toString = "%s\n\t[%s]\n\t%s".format(exceptionName, uuid, message)
+
+ override lazy val toString = {
+ val name = getClass.getName
+ val trace = stackTraceToString
+ "%s: %s\n[%s]\n%s".format(name, message, uuid, trace)
+ }
+
+ def stackTraceToString = {
+ val trace = getStackTrace
+ val sb = new StringBuffer
+ for (i <- 0 until trace.length)
+ sb.append("\tat %s\n" format trace(i))
+ sb.toString
+ }
}
object AkkaException {