diff --git a/src/error_logger_lager_h.erl b/src/error_logger_lager_h.erl index ff8c28c..907d831 100644 --- a/src/error_logger_lager_h.erl +++ b/src/error_logger_lager_h.erl @@ -90,7 +90,7 @@ handle_event(Event, State) -> case lists:sort(D) of [{errorContext, Ctx}, {offender, Off}, {reason, Reason}, {supervisor, Name}] -> Offender = format_offender(Off), - ?LOG(error, Pid, "Supervisor ~w had child ~s exit with reason ~w in context ~w", [element(2, Name), Offender, Reason, Ctx]); + ?LOG(error, Pid, "Supervisor ~w had child ~s exit with reason ~s in context ~w", [element(2, Name), Offender, format_reason(Reason), Ctx]); _ -> ?LOG(error, Pid, ["SUPERVISOR REPORT ", print_silly_list(D)]) end; diff --git a/test/lager_test_backend.erl b/test/lager_test_backend.erl index 8d1f98d..0d542fd 100644 --- a/test/lager_test_backend.erl +++ b/test/lager_test_backend.erl @@ -479,6 +479,16 @@ error_logger_redirect_test_() -> ?assertEqual(Expected, lists:flatten(Msg)) end }, + {"supervisor reports with real error", + fun() -> + error_logger:error_report(supervisor_report, [{errorContext, france}, {offender, [{name, mini_steve}, {mfargs, {a, b, [c]}}, {pid, bleh}]}, {reason, {function_clause,[{crash,handle_info,[foo]}]}}, {supervisor, {local, steve}}]), + timer:sleep(100), + {_, _, Msg} = pop(), + Expected = lists:flatten(io_lib:format("[error] ~w Supervisor steve had child mini_steve started with a:b(c) at bleh exit with reason no function clause matching crash:handle_info(foo) in context france", [self()])), + ?assertEqual(Expected, lists:flatten(Msg)) + end + }, + {"supervisor_bridge reports", fun() -> error_logger:error_report(supervisor_report, [{errorContext, france}, {offender, [{mod, mini_steve}, {pid, bleh}]}, {reason, fired}, {supervisor, {local, steve}}]),