honeybadger 6.6.0 → 6.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +16 -0
- data/lib/honeybadger/backend/base.rb +1 -0
- data/lib/honeybadger/breadcrumbs/logging.rb +77 -8
- data/lib/honeybadger/events_worker.rb +2 -2
- data/lib/honeybadger/plugins/breadcrumbs.rb +5 -1
- data/lib/honeybadger/version.rb +1 -1
- data/lib/honeybadger/worker.rb +2 -2
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 03a414b7ec784574a3164541f03d9e2b60d3a4af1d09b754d5c630282b3f0c12
|
|
4
|
+
data.tar.gz: 26afeb772bb5e998ed9a15a213697b72d3415ffadfc858fc1419913daa5ca500
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7ac887b4d796a351c0578cd52b492ca5e75a0232ff9f8fb1ab5f323608bfae9224d1e46a6ae8bd928b88cc5e424f65e5683e204c8c14ab9c7c639d76de651522
|
|
7
|
+
data.tar.gz: 0ba659e647134528493c16665e40efa33d7ef4ad13af4472005119d807941d4e3c6be047671d8a0588b3b064b71a8cf6d12d3a7402287e029cf4f66dd5173575
|
data/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
## [6.6.2](https://github.com/honeybadger-io/honeybadger-ruby/compare/v6.6.0...v6.6.1) (2026-05-29)
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
* avoid duplicate BroadcastLogger breadcrumbs ([#814](https://github.com/honeybadger-io/honeybadger-ruby/issues/814)) ([4f5c5e0](https://github.com/honeybadger-io/honeybadger-ruby/commit/4f5c5e0dad934cc6a96f6444e257b733fd6471cf)), closes [#765](https://github.com/honeybadger-io/honeybadger-ruby/issues/765)
|
|
10
|
+
* change logging level for messages emitted in the development environment ([b615c83](https://github.com/honeybadger-io/honeybadger-ruby/commit/b615c83a75b8fcb45cd8b775696a6231e5c4e107))
|
|
11
|
+
* log the real reason for 403 responses ([#822](https://github.com/honeybadger-io/honeybadger-ruby/issues/822)) ([0338892](https://github.com/honeybadger-io/honeybadger-ruby/commit/03388926bb0cbb22f647860437565abf5bafd526))
|
|
12
|
+
|
|
13
|
+
## [6.6.1](https://github.com/honeybadger-io/honeybadger-ruby/compare/v6.6.0...v6.6.1) (2026-05-15)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Bug Fixes
|
|
17
|
+
|
|
18
|
+
* change logging level for messages emitted in the development environment ([b615c83](https://github.com/honeybadger-io/honeybadger-ruby/commit/b615c83a75b8fcb45cd8b775696a6231e5c4e107))
|
|
19
|
+
|
|
4
20
|
## [6.6.0](https://github.com/honeybadger-io/honeybadger-ruby/compare/v6.5.6...v6.6.0) (2026-05-08)
|
|
5
21
|
|
|
6
22
|
|
|
@@ -50,6 +50,7 @@ module Honeybadger
|
|
|
50
50
|
|
|
51
51
|
def error_message
|
|
52
52
|
return message if code == :error
|
|
53
|
+
return error if code == 403 && NOT_BLANK.match?(error)
|
|
53
54
|
return FRIENDLY_ERRORS[code] if FRIENDLY_ERRORS[code]
|
|
54
55
|
return error if NOT_BLANK.match?(error)
|
|
55
56
|
msg = "The server responded with #{code}"
|
|
@@ -1,12 +1,23 @@
|
|
|
1
|
+
require "logger"
|
|
1
2
|
require "honeybadger/util/sanitizer"
|
|
2
3
|
|
|
3
4
|
module Honeybadger
|
|
4
5
|
module Breadcrumbs
|
|
5
6
|
# @api private
|
|
6
7
|
#
|
|
7
|
-
module
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
module LogHelper
|
|
9
|
+
LOG_SEVERITY_LABELS = {
|
|
10
|
+
::Logger::DEBUG => "DEBUG",
|
|
11
|
+
::Logger::INFO => "INFO",
|
|
12
|
+
::Logger::WARN => "WARN",
|
|
13
|
+
::Logger::ERROR => "ERROR",
|
|
14
|
+
::Logger::FATAL => "FATAL",
|
|
15
|
+
::Logger::UNKNOWN => "ANY"
|
|
16
|
+
}.freeze
|
|
17
|
+
|
|
18
|
+
private
|
|
19
|
+
|
|
20
|
+
def add_log_breadcrumb(severity, message = nil, progname = nil)
|
|
10
21
|
if defined?(Dry::Logger::Entry) && progname.is_a?(Dry::Logger::Entry) # Hanami uses dry-logger
|
|
11
22
|
message, progname = progname.message || progname.exception, progname.progname
|
|
12
23
|
elsif message.nil?
|
|
@@ -15,24 +26,81 @@ module Honeybadger
|
|
|
15
26
|
message &&= Util::Sanitizer.sanitize(message.to_s)&.strip
|
|
16
27
|
unless should_ignore_log?(message, progname)
|
|
17
28
|
Honeybadger.add_breadcrumb(message, category: :log, metadata: {
|
|
18
|
-
severity:
|
|
29
|
+
severity: log_severity_label(severity),
|
|
19
30
|
progname: progname
|
|
20
31
|
})
|
|
21
32
|
end
|
|
22
|
-
|
|
23
|
-
super(org_severity, org_message, org_progname)
|
|
24
33
|
end
|
|
25
34
|
|
|
26
|
-
|
|
35
|
+
def log_severity_label(severity)
|
|
36
|
+
if self.class.method_defined?(:format_severity) || self.class.private_method_defined?(:format_severity)
|
|
37
|
+
return format_severity(severity)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
LOG_SEVERITY_LABELS.fetch(severity, severity)
|
|
41
|
+
end
|
|
27
42
|
|
|
28
43
|
def should_ignore_log?(message, progname)
|
|
29
44
|
message.nil? ||
|
|
30
45
|
message == "" ||
|
|
31
46
|
Thread.current[:__hb_within_log_subscriber] ||
|
|
47
|
+
Thread.current[:__hb_within_broadcast_logger] ||
|
|
32
48
|
progname == "honeybadger"
|
|
33
49
|
end
|
|
34
50
|
end
|
|
35
51
|
|
|
52
|
+
module LogWrapper
|
|
53
|
+
include LogHelper
|
|
54
|
+
|
|
55
|
+
def add(severity, message = nil, progname = nil, &block)
|
|
56
|
+
org_severity, org_message, org_progname = severity, message, progname
|
|
57
|
+
add_log_breadcrumb(severity, message, progname)
|
|
58
|
+
|
|
59
|
+
super(org_severity, org_message, org_progname, &block)
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# @api private
|
|
64
|
+
#
|
|
65
|
+
# ActiveSupport::BroadcastLogger forwards one logical log event to multiple
|
|
66
|
+
# Logger instances. Wrapping it separately records the event once while
|
|
67
|
+
# silencing the sink loggers for the duration of the broadcast.
|
|
68
|
+
module BroadcastLogWrapper
|
|
69
|
+
include LogHelper
|
|
70
|
+
|
|
71
|
+
LOG_METHOD_SEVERITIES = {
|
|
72
|
+
debug: ::Logger::DEBUG,
|
|
73
|
+
info: ::Logger::INFO,
|
|
74
|
+
warn: ::Logger::WARN,
|
|
75
|
+
error: ::Logger::ERROR,
|
|
76
|
+
fatal: ::Logger::FATAL,
|
|
77
|
+
unknown: ::Logger::UNKNOWN
|
|
78
|
+
}.freeze
|
|
79
|
+
|
|
80
|
+
def add(severity, message = nil, progname = nil, &block)
|
|
81
|
+
add_log_breadcrumb(severity, message, progname)
|
|
82
|
+
without_sink_breadcrumbs { super(severity, message, progname, &block) }
|
|
83
|
+
end
|
|
84
|
+
alias_method :log, :add
|
|
85
|
+
|
|
86
|
+
LOG_METHOD_SEVERITIES.each do |level, severity|
|
|
87
|
+
define_method(level) do |progname = nil, &block|
|
|
88
|
+
add_log_breadcrumb(severity, nil, progname)
|
|
89
|
+
without_sink_breadcrumbs { super(progname, &block) }
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
private
|
|
94
|
+
|
|
95
|
+
def without_sink_breadcrumbs
|
|
96
|
+
previous = Thread.current[:__hb_within_broadcast_logger]
|
|
97
|
+
Thread.current[:__hb_within_broadcast_logger] = true
|
|
98
|
+
yield
|
|
99
|
+
ensure
|
|
100
|
+
Thread.current[:__hb_within_broadcast_logger] = previous
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
36
104
|
# @api private
|
|
37
105
|
#
|
|
38
106
|
# This module is designed to be prepended into the
|
|
@@ -43,10 +111,11 @@ module Honeybadger
|
|
|
43
111
|
module LogSubscriberInjector
|
|
44
112
|
%w[info debug warn error fatal unknown].each do |level|
|
|
45
113
|
define_method(level) do |*args, &block|
|
|
114
|
+
previous = Thread.current[:__hb_within_log_subscriber]
|
|
46
115
|
Thread.current[:__hb_within_log_subscriber] = true
|
|
47
116
|
super(*args, &block)
|
|
48
117
|
ensure
|
|
49
|
-
Thread.current[:__hb_within_log_subscriber] =
|
|
118
|
+
Thread.current[:__hb_within_log_subscriber] = previous
|
|
50
119
|
end
|
|
51
120
|
end
|
|
52
121
|
end
|
|
@@ -294,7 +294,7 @@ module Honeybadger
|
|
|
294
294
|
warn { sprintf("Insights Event send failed: payment is required. code=%s", response.code) }
|
|
295
295
|
suspend(3600)
|
|
296
296
|
when 403
|
|
297
|
-
warn { sprintf("Insights Event send failed:
|
|
297
|
+
warn { sprintf("Insights Event send failed: %s code=%s", response.error_message, response.code) }
|
|
298
298
|
suspend(3600)
|
|
299
299
|
when 413
|
|
300
300
|
warn { sprintf("Insights Event send failed: Payload is too large. code=%s", response.code) }
|
|
@@ -305,7 +305,7 @@ module Honeybadger
|
|
|
305
305
|
debug { sprintf("Success ⚡ Insights Event sent code=%s", response.code) }
|
|
306
306
|
end
|
|
307
307
|
when :stubbed
|
|
308
|
-
|
|
308
|
+
debug { "Success ⚡ Development mode is enabled; This event will be sent after app is deployed." }
|
|
309
309
|
when :error
|
|
310
310
|
warn { sprintf("Insights Event send failed: an unknown error occurred. code=%s error=%s", response.code, response.message.to_s.dump) }
|
|
311
311
|
else
|
|
@@ -50,7 +50,11 @@ module Honeybadger
|
|
|
50
50
|
config[:"breadcrumbs.active_support_notifications"].each do |name, config|
|
|
51
51
|
RailsBreadcrumbs.subscribe_to_notification(name, config)
|
|
52
52
|
end
|
|
53
|
-
|
|
53
|
+
|
|
54
|
+
if config[:"breadcrumbs.logging.enabled"]
|
|
55
|
+
ActiveSupport::LogSubscriber.prepend(Honeybadger::Breadcrumbs::LogSubscriberInjector)
|
|
56
|
+
ActiveSupport::BroadcastLogger.prepend(Honeybadger::Breadcrumbs::BroadcastLogWrapper) if defined?(ActiveSupport::BroadcastLogger)
|
|
57
|
+
end
|
|
54
58
|
end
|
|
55
59
|
|
|
56
60
|
::Logger.prepend(Honeybadger::Breadcrumbs::LogWrapper) if config[:"breadcrumbs.logging.enabled"]
|
data/lib/honeybadger/version.rb
CHANGED
data/lib/honeybadger/worker.rb
CHANGED
|
@@ -221,7 +221,7 @@ module Honeybadger
|
|
|
221
221
|
warn { sprintf("Error report failed: payment is required. id=%s code=%s", msg.id, response.code) }
|
|
222
222
|
suspend(3600)
|
|
223
223
|
when 403
|
|
224
|
-
warn { sprintf("Error report failed:
|
|
224
|
+
warn { sprintf("Error report failed: %s id=%s code=%s", response.error_message, msg.id, response.code) }
|
|
225
225
|
suspend(3600)
|
|
226
226
|
when 413
|
|
227
227
|
warn { sprintf("Error report failed: Payload is too large. id=%s code=%s", msg.id, response.code) }
|
|
@@ -233,7 +233,7 @@ module Honeybadger
|
|
|
233
233
|
info { sprintf("Success ⚡ https://%s/notice/%s id=%s code=%s", host, msg.id, msg.id, response.code) }
|
|
234
234
|
end
|
|
235
235
|
when :stubbed
|
|
236
|
-
|
|
236
|
+
debug { sprintf("Success ⚡ Development mode is enabled; this error will be reported if it occurs after you deploy your app. id=%s", msg.id) }
|
|
237
237
|
when :error
|
|
238
238
|
warn { sprintf("Error report failed: an unknown error occurred. code=%s error=%s", response.code, response.message.to_s.dump) }
|
|
239
239
|
else
|