Skip to content

Commit 07d0d19

Browse files
authored
Ensure log messages are not captured with capture_log_messages false (#865)
Based on #864.
1 parent 4827110 commit 07d0d19

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

lib/sentry/logger_handler.ex

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,11 @@ defmodule Sentry.LoggerHandler do
408408
capture(:exception, exception, sentry_opts, config)
409409

410410
_ ->
411-
capture(:message, inspect(report), sentry_opts, config)
411+
if config.capture_log_messages do
412+
capture(:message, inspect(report), sentry_opts, config)
413+
else
414+
:ok
415+
end
412416
end
413417
end
414418

test/sentry/logger_handler_test.exs

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,42 @@ defmodule Sentry.LoggerHandlerTest do
123123
describe "with Bandit" do
124124
end
125125

126+
describe "with capture_log_messages: false" do
127+
@tag handler_config: %{capture_log_messages: false}
128+
test "doesn't send error messages by default", %{sender_ref: ref} do
129+
Logger.error("Testing error")
130+
131+
refute_received {^ref, _event}, 100
132+
end
133+
134+
@tag handler_config: %{capture_log_messages: false}
135+
test "doesn't send structured logs keyword", %{sender_ref: ref} do
136+
Logger.error(foo: "bar")
137+
138+
refute_received {^ref, _event}, 100
139+
end
140+
141+
@tag handler_config: %{capture_log_messages: false}
142+
test "doesn't send structured logs map", %{sender_ref: ref} do
143+
Logger.error(%{foo: "bar"})
144+
145+
refute_received {^ref, _event}, 100
146+
end
147+
148+
@tag handler_config: %{capture_log_messages: false}
149+
test "still captures crashes", %{sender_ref: ref} do
150+
pid = start_supervised!(TestGenServer, restart: :temporary)
151+
run_and_catch_exit(pid, fn -> Keyword.fetch!([], :foo) end)
152+
153+
assert_receive {^ref, event}
154+
assert %KeyError{} = event.original_exception
155+
assert [exception] = event.exception
156+
assert exception.type == "KeyError"
157+
assert exception.value == "key :foo not found in: []"
158+
assert Enum.find(exception.stacktrace.frames, &(&1.function =~ "Keyword.fetch!/2"))
159+
end
160+
end
161+
126162
describe "with capture_log_messages: true" do
127163
@tag handler_config: %{capture_log_messages: true}
128164
test "sends error messages by default", %{sender_ref: ref} do
@@ -145,6 +181,7 @@ defmodule Sentry.LoggerHandlerTest do
145181
refute_received {^ref, _event}, 100
146182
end
147183

184+
@tag handler_config: %{capture_log_messages: true}
148185
test "support structured logs map", %{sender_ref: ref} do
149186
Logger.error(%{foo: "bar"})
150187

@@ -158,6 +195,7 @@ defmodule Sentry.LoggerHandlerTest do
158195
defstruct [:bar]
159196
end
160197

198+
@tag handler_config: %{capture_log_messages: true}
161199
test "support structured logs struct", %{sender_ref: ref} do
162200
Logger.error(%Foo{})
163201

0 commit comments

Comments
 (0)