Skip to content

Commit 700f0f9

Browse files
Merge pull request #429 from getsentry/log-on-unencodable-json
Log error when JSON is unencodable
2 parents 7b4295a + 1fddecb commit 700f0f9

File tree

2 files changed

+23
-16
lines changed

2 files changed

+23
-16
lines changed

lib/sentry/client.ex

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -109,25 +109,26 @@ defmodule Sentry.Client do
109109
defp encode_and_send(event, result, should_log) do
110110
json_library = Config.json_library()
111111

112-
render_event(event)
113-
|> json_library.encode()
114-
|> case do
115-
{:ok, body} ->
116-
result = do_send_event(event, body, result)
117-
118-
if should_log do
119-
maybe_log_result(result)
120-
end
112+
result =
113+
render_event(event)
114+
|> json_library.encode()
115+
|> case do
116+
{:ok, body} ->
117+
do_send_event(event, body, result)
121118

122-
if match?({:ok, _}, result) do
123-
Sentry.put_last_event_id_and_source(event.event_id, event.event_source)
124-
end
119+
{:error, error} ->
120+
{:error, {:invalid_json, error}}
121+
end
125122

126-
result
123+
if match?({:ok, _}, result) do
124+
Sentry.put_last_event_id_and_source(event.event_id, event.event_source)
125+
end
127126

128-
{:error, error} ->
129-
{:error, {:invalid_json, error}}
127+
if should_log do
128+
maybe_log_result(result)
130129
end
130+
131+
result
131132
end
132133

133134
@spec do_send_event(Event.t(), map(), :async) :: {:ok, Task.t()} | {:error, any()}
@@ -367,7 +368,7 @@ defmodule Sentry.Client do
367368
Logger.log(
368369
Config.log_level(),
369370
fn ->
370-
["Failed to send Sentry event.", message]
371+
["Failed to send Sentry event. ", message]
371372
end,
372373
domain: [:sentry]
373374
)

test/client_test.exs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -335,4 +335,10 @@ defmodule Sentry.ClientTest do
335335
end
336336
end) =~ "[error] Failed to send Sentry event"
337337
end
338+
339+
test "logs JSON parsing errors at configured log_level" do
340+
assert capture_log(fn ->
341+
Sentry.capture_message("something happened", extra: %{metadata: [keyword: "list"]})
342+
end) =~ "Failed to send Sentry event. Unable to encode JSON"
343+
end
338344
end

0 commit comments

Comments
 (0)