diff options
author | Mitchell Henke <mitchell@mitchellhenke.com> | 2019-05-07 03:20:50 -0500 |
---|---|---|
committer | José Valim <jose.valim@plataformatec.com.br> | 2019-05-08 13:10:15 +0200 |
commit | fca5f1cf733ed307a706a9a34c0a6af8eb26576f (patch) | |
tree | c90db0ee7b6fb41698edcea06bce6257b3445979 | |
parent | 153ec434de9247da310d60c476fcf2fb8790a67b (diff) | |
download | elixir-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.ex | 13 | ||||
-rw-r--r-- | lib/logger/test/logger/translator_test.exs | 13 |
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 |