diff options
Diffstat (limited to 'src/main/kotlin/moe/nea/ledger/utils/telemetry/ExceptionContextValue.kt')
-rw-r--r-- | src/main/kotlin/moe/nea/ledger/utils/telemetry/ExceptionContextValue.kt | 39 |
1 files changed, 0 insertions, 39 deletions
diff --git a/src/main/kotlin/moe/nea/ledger/utils/telemetry/ExceptionContextValue.kt b/src/main/kotlin/moe/nea/ledger/utils/telemetry/ExceptionContextValue.kt deleted file mode 100644 index 96b70ec..0000000 --- a/src/main/kotlin/moe/nea/ledger/utils/telemetry/ExceptionContextValue.kt +++ /dev/null @@ -1,39 +0,0 @@ -package moe.nea.ledger.utils.telemetry - -import com.google.gson.JsonArray -import com.google.gson.JsonElement -import com.google.gson.JsonObject - -class ExceptionContextValue(val exception: Throwable) : ContextValue { - val stackTrace by lazy { - exception.stackTraceToString() - } - - override fun serialize(): JsonElement { - val jsonObject = JsonObject() - jsonObject.addProperty("exception_stackTrace", stackTrace) - jsonObject.add("exception_structure", walkExceptions(exception, 6)) - return jsonObject - } - - private fun walkExceptions(exception: Throwable, searchDepth: Int): JsonElement { - val obj = JsonObject() - obj.addProperty("class", exception.javaClass.name) - obj.addProperty("message", exception.message) - // TODO: allow exceptions to implement an "extra info" interface - if (searchDepth > 0) { - val cause = exception.cause - if (cause != null && cause !== exception) { - obj.add("cause", walkExceptions(cause, searchDepth - 1)) - } - val suppressions = JsonArray() - for (suppressedException in exception.suppressedExceptions) { - suppressions.add(walkExceptions(suppressedException, searchDepth - 1)) - } - if (suppressions.size() > 0) { - obj.add("suppressions", suppressions) - } - } - return obj - } -} |