Skip to content

Commit 8d39305

Browse files
committed
Patch our own Breadcrumb::SentryLogger
Otherwise this resulted in stack error
1 parent d20494e commit 8d39305

File tree

2 files changed

+13
-7
lines changed

2 files changed

+13
-7
lines changed

sentry-ruby/lib/sentry/std_lib_logger.rb

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ module StdLibLogger
1313
}.freeze
1414

1515
def add(severity, message = nil, progname = nil, &block)
16-
super
16+
result = super
1717

18-
return unless Sentry.initialized? && Sentry.get_current_hub
18+
return result unless Sentry.initialized? && Sentry.get_current_hub
1919

2020
# exclude sentry SDK logs -- to prevent recursive log action,
2121
# do not process internal logs again
@@ -36,14 +36,16 @@ def add(severity, message = nil, progname = nil, &block)
3636
end
3737
end
3838

39-
super
39+
result
4040
end
4141
end
4242
end
4343

4444
Sentry.register_patch(:logger) do |config|
4545
if config.enable_logs
46-
::Logger.prepend(Sentry::StdLibLogger)
46+
require "sentry/breadcrumb/sentry_logger"
47+
48+
Sentry::Breadcrumb::SentryLogger.prepend(Sentry::StdLibLogger)
4749
else
4850
Sentry.sdk_logger.warn(":logger patch enabled but `enable_logs` is turned off - skipping applying patch")
4951
end

sentry-ruby/spec/sentry/std_lib_logger_spec.rb

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# frozen_string_literal: true
22

33
RSpec.describe Sentry::StdLibLogger do
4-
let(:logger) { ::Logger.new(IO::NULL) }
4+
let(:logger) { ::Logger.new($stdout) }
55

66
context "when enable_logs is set to true but logger patch is not enabled" do
77
before do
@@ -11,7 +11,9 @@
1111
end
1212

1313
it "does not send log using stdlib logger" do
14-
logger.send(:info, "Hello World")
14+
expect {
15+
logger.send(:info, "Hello World")
16+
}.to output(/Hello World/).to_stdout
1517

1618
expect(sentry_logs).to be_empty
1719
end
@@ -29,7 +31,9 @@
2931
["info", "warn", "error", "fatal"].each do |level|
3032
describe "##{level}" do
3133
it "send logs using stdlib logger" do
32-
logger.send(level, "Hello World")
34+
expect {
35+
logger.send(level, "Hello World")
36+
}.to output(/Hello World/).to_stdout
3337

3438
expect(sentry_logs).to_not be_empty
3539

0 commit comments

Comments
 (0)