diff --git a/config/config.exs b/config/config.exs index 75b858d..895be55 100644 --- a/config/config.exs +++ b/config/config.exs @@ -1,3 +1,3 @@ use Mix.Config -config :logger, :console, metadata: :all +config :logger, :console, metadata: [:all, :crash_reason] config :elixir, :time_zone_database, Tzdata.TimeZoneDatabase diff --git a/lib/quantum/execution_broadcaster.ex b/lib/quantum/execution_broadcaster.ex index a7b8337..b64b078 100644 --- a/lib/quantum/execution_broadcaster.ex +++ b/lib/quantum/execution_broadcaster.ex @@ -263,6 +263,8 @@ defmodule Quantum.ExecutionBroadcaster do job: job, error: e ) + + state end defp get_next_execution_time( diff --git a/lib/quantum/executor.ex b/lib/quantum/executor.ex index 65f4252..f73c309 100644 --- a/lib/quantum/executor.ex +++ b/lib/quantum/executor.ex @@ -159,15 +159,20 @@ defmodule Quantum.Executor do def log_exception(kind, reason, stacktrace) do reason = Exception.normalize(kind, reason, stacktrace) - crash_reason = - case kind do - :throw -> {{:nocatch, reason}, stacktrace} - _ -> {reason, stacktrace} - end + # TODO: Remove in a future version and make elixir 1.10 minimum requirement + if Version.match?(System.version(), "< 1.10.0") do + Logger.error(Exception.format(kind, reason, stacktrace)) + else + crash_reason = + case kind do + :throw -> {{:nocatch, reason}, stacktrace} + _ -> {reason, stacktrace} + end - Logger.error( - Exception.format(kind, reason, stacktrace), - crash_reason: crash_reason - ) + Logger.error( + Exception.format(kind, reason, stacktrace), + crash_reason: crash_reason + ) + end end end diff --git a/test/quantum/executor_test.exs b/test/quantum/executor_test.exs index 8662715..b72b309 100644 --- a/test/quantum/executor_test.exs +++ b/test/quantum/executor_test.exs @@ -359,7 +359,7 @@ defmodule Quantum.ExecutorTest do assert :ok == wait_for_termination(task) end) - assert logs =~ ~r/type=error/ + assert logs =~ ~r/[error]/ assert logs =~ ~r/Execution failed for job/ assert_receive %{test_id: ^test_id, type: :start} @@ -409,8 +409,6 @@ defmodule Quantum.ExecutorTest do assert :ok == wait_for_termination(task) end) - assert logs =~ ~r/type=exit/ - assert logs =~ ~r/value=failure/ assert logs =~ "[error] ** (exit) :failure" assert_receive %{test_id: ^test_id, type: :start} @@ -463,8 +461,8 @@ defmodule Quantum.ExecutorTest do end) '#Ref' ++ rest = :erlang.ref_to_list(ref) - assert logs =~ "type=throw" - assert logs =~ "value=#{rest}" + assert logs =~ "[error] ** (throw)" + assert logs =~ "#{rest}" assert_receive %{test_id: ^test_id, type: :start} assert_receive %{