Tuần trước, chúng tôi đã phát hành phiên bản 4.0.0 của honeybadger
Đá quý Ruby. Bản phát hành này bao gồm một tính năng đã được chờ đợi từ lâu, giúp bạn dễ dàng tùy chỉnh các báo cáo lỗi của mình hơn trước khi chúng được gửi đến Honeybadger. Chúng tôi cũng đã thực hiện một số cấu trúc lại rất cần thiết và thực hiện một số loại bỏ và ngừng sử dụng để có biện pháp tốt. Tuy nhiên, đừng lo lắng — hầu hết API vẫn không thay đổi, vì vậy việc nâng cấp sẽ là một quá trình tương đối dễ dàng đối với hầu hết người dùng.
Giới thiệu before_notify
gọi lại
Các phiên bản trước của honeybadger
gem đã cung cấp ba lệnh gọi lại có thể được sử dụng để tùy chỉnh các khía cạnh khác nhau của các lỗi được báo cáo:
-
Honeybadger.backtrace_filter
- một cuộc gọi lại để sửa đổi hệ thống tồn đọng được báo cáo cho Honeybadger -
Honeybadger.exception_fingerprint
- một lệnh gọi lại để tùy chỉnh nhóm các lỗi trong Honeybadger -
Honeybadger.exception_filter
- một cuộc gọi lại để xác định xem có nên bỏ qua hoàn toàn báo cáo lỗi không
Ngoài các lệnh gọi lại này, không có cách chung nào để thay đổi dữ liệu khác trong báo cáo lỗi, chẳng hạn như thông báo lỗi, thẻ hoặc dữ liệu yêu cầu — ngoài việc cứu và báo cáo cục bộ các trường hợp ngoại lệ. Đó là nơi before_notify
mới lệnh gọi lại xuất hiện. Trên thực tế, lệnh gọi lại mới rất linh hoạt nên nó thay thế hoàn toàn cả ba lệnh gọi lại trước đó, hiện không được dùng nữa.
Về sau, bạn có thể sử dụng before_notify
gọi lại để hoàn thành tất cả các tác vụ này và hơn thế nữa. Nhiều lệnh gọi lại cũng được hỗ trợ, mang lại tính linh hoạt cao hơn khi định cấu hình Honeybadger:
Honeybadger.configure do |config|
# Ignore an error report
# Replaces Honeybadger.exception_filter
config.before_notify do |notice|
notice.halt! if notice.controller == 'auth'
end
# Modify the backtrace
# Replaces Honeybadger.backtrace_filter
config.before_notify do |notice|
notice.backtrace.reject!{|l| l =~ /gem/ }
end
# Customize error grouping
# Replaces Honeybadger.exception_fingerprint
config.before_notify do |notice|
notice.fingerprint = 'new fingerprint'
end
# Change all the properties!
config.before_notify do |notice|
notice.api_key = 'custom api key'
notice.error_message = "badgers!"
notice.error_class = 'MyError'
notice.backtrace = ["/path/to/file.rb:5 in `method'"]
notice.fingerprint = 'some unique string'
notice.tags = ['foo', 'bar']
notice.context = { user: 33 }
notice.controller = 'MyController'
notice.action = 'index'
notice.parameters = { q: 'badgers?' }
notice.session = { uid: 42 }
notice.url = "/badgers"
end
end
Chúng tôi rất vui về before_notify
mới gọi lại và tin rằng nó sẽ mở ra rất nhiều tùy chọn mới trong tương lai!
Nâng cấp lên 4.x
Đối với hầu hết người dùng trên 3.x, việc nâng cấp sẽ không mấy suôn sẻ. Nếu bạn đang sử dụng ba lệnh gọi lại mà tôi đã đề cập ở trên, thì bạn cần cập nhật chúng để sử dụng before_notify
thay vào đó, và có khả năng thực hiện một vài thay đổi nhỏ khác, như một phần của API công khai cho Notice
(đối tượng được chuyển đến lệnh gọi lại) đã thay đổi một chút.
Để biết thêm thông tin:
- Hướng dẫn nâng cấp 3.x lên 4.x
- Hoàn thành CHANGELOG