summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMitchell Henke <mitchell@mitchellhenke.com>2019-05-07 03:20:50 -0500
committerJosé Valim <jose.valim@plataformatec.com.br>2019-05-08 13:10:15 +0200
commitfca5f1cf733ed307a706a9a34c0a6af8eb26576f (patch)
treec90db0ee7b6fb41698edcea06bce6257b3445979
parent153ec434de9247da310d60c476fcf2fb8790a67b (diff)
downloadelixir-fca5f1cf733ed307a706a9a34c0a6af8eb26576f.tar.gz
Translate process crash on node in Logger (#9020)
Signed-off-by: José Valim <jose.valim@plataformatec.com.br>
-rw-r--r--lib/logger/lib/logger/translator.ex13
-rw-r--r--lib/logger/test/logger/translator_test.exs13
2 files changed, 26 insertions, 0 deletions
diff --git a/lib/logger/lib/logger/translator.ex b/lib/logger/lib/logger/translator.ex
index cb4678a09..2774dd9ed 100644
--- a/lib/logger/lib/logger/translator.ex
+++ b/lib/logger/lib/logger/translator.ex
@@ -126,6 +126,19 @@ defmodule Logger.Translator do
{:ok, msg, metadata}
+ {'Error in process ' ++ _, [pid, node, {reason, stack}]} ->
+ reason = Exception.normalize(:error, reason, stack)
+
+ msg = [
+ "Process ",
+ inspect(pid),
+ " on node ",
+ inspect(node),
+ " raised an exception" | format(:error, reason, stack)
+ ]
+
+ {:ok, msg, [crash_reason: exit_reason(:error, reason, stack)]}
+
{'Error in process ' ++ _, [pid, {reason, stack}]} ->
reason = Exception.normalize(:error, reason, stack)
msg = ["Process ", inspect(pid), " raised an exception" | format(:error, reason, stack)]
diff --git a/lib/logger/test/logger/translator_test.exs b/lib/logger/test/logger/translator_test.exs
index 11298d109..5d031b92d 100644
--- a/lib/logger/test/logger/translator_test.exs
+++ b/lib/logger/test/logger/translator_test.exs
@@ -981,6 +981,19 @@ defmodule Logger.TranslatorTest do
assert {:stop, [_ | _]} = process_metadata[:crash_reason]
end
+ test "translates process crash with erts" do
+ assert {:ok, msg, meta} =
+ Logger.Translator.translate(
+ :error,
+ :error,
+ :format,
+ {'Error in process ~p on node ~p with exit value:~n~p~n',
+ [self(), :"name@127.0.0.1", {:badarith, [{:erlang, :/, [1, 0], []}]}]}
+ )
+
+ assert Keyword.get(meta, :crash_reason)
+ end
+
test "reports :undefined MFA properly" do
defmodule WeirdFunctionNamesGenServer do
use GenServer