diff --git a/lib/sentry/logger_handler.ex b/lib/sentry/logger_handler.ex index 60cc0329..e824f0ff 100644 --- a/lib/sentry/logger_handler.ex +++ b/lib/sentry/logger_handler.ex @@ -360,6 +360,16 @@ defmodule Sentry.LoggerHandler do end end + # Elixir 1.19 puts string translation inside the report instead of replacing + # it completely. We switch it back for compatibility with existing code. + defp log_unfiltered( + %{msg: {:report, %{elixir_translation: unicode_chardata}}} = log_event, + sentry_opts, + %__MODULE__{} = config + ) do + log_unfiltered(%{log_event | msg: {:string, unicode_chardata}}, sentry_opts, config) + end + # A string was logged. We check for the :crash_reason metadata and try to build a sensible # report from there, otherwise we use the logged string directly. defp log_unfiltered( diff --git a/test/sentry/logger_handler_test.exs b/test/sentry/logger_handler_test.exs index d44f0b40..616bf956 100644 --- a/test/sentry/logger_handler_test.exs +++ b/test/sentry/logger_handler_test.exs @@ -154,7 +154,7 @@ defmodule Sentry.LoggerHandlerTest do assert %KeyError{} = event.original_exception assert [exception] = event.exception assert exception.type == "KeyError" - assert exception.value == "key :foo not found in: []" + assert exception.value =~ ~r"key :foo not found in:\s+\[\]" assert Enum.find(exception.stacktrace.frames, &(&1.function =~ "Keyword.fetch!/2")) end end @@ -286,7 +286,7 @@ defmodule Sentry.LoggerHandlerTest do assert %KeyError{} = event.original_exception assert [exception] = event.exception assert exception.type == "KeyError" - assert exception.value == "key :foo not found in: []" + assert exception.value =~ ~r"key :foo not found in:\s+\[\]" assert Enum.find(exception.stacktrace.frames, &(&1.function =~ "Keyword.fetch!/2")) end