Releases: getsentry/sentry-ruby
5.26.0
Feature
-
Support for
:loggerpatch which enables sending logs to Sentry whenenabled_logsis set to true (#2657)Here's a sample config:
Sentry.init do |config| # ... your setup ... config.enable_logs = true config.enabled_patches = [:logger] end
Bug Fixes
- Skip creating
LogEventBufferif logging is not enabled (#2652)
5.25.0
5.24.0
Features
-
Add new sidekiq config
report_only_dead_jobs(#2581) -
Add
max_nestingof 10 to breadcrumbs data serialization (#2583) -
Add sidekiq config
propagate_tracesto control trace header injection (#2588)If you use schedulers you can get one large trace with all your jobs which is undesirable.
We recommend using the following to propagate traces only from the Rails server and not elsewhere.config.sidekiq.propagate_traces = false unless Rails.const_defined?('Server')
-
Only expose
active_storagekeys on span data ifsend_default_piiis on (#2589) -
Add new
Sentry.loggerfor Structured Logging feature (#2620).To enable structured logging you need to turn on the
enable_logsconfiguration option:Sentry.init do |config| # ... your setup ... config.enable_logs = true end
Once you configured structured logging, you get access to a new
Sentry.loggerobject that can be
used as a regular logger with additional structured data support:Sentry.logger.info("User logged in", user_id: 123) Sentry.logger.error("Failed to process payment", transaction_id: "tx_123", error_code: "PAYMENT_FAILED" )
You can also use message templates with positional or hash parameters:
Sentry.logger.info("User %{name} logged in", name: "Jane Doe") Sentry.logger.info("User %s logged in", ["Jane Doe"])
Any other arbitrary attributes will be sent as part of the log event payload:
# Here `user_id` and `action` will be sent as extra attributes that Sentry Logs UI displays Sentry.logger.info("User %{user} logged in", user: "Jane", user_id: 123, action: "create")
⚠️ Whenenable_logsistrue, previousSentry.loggershould no longer be used for internal SDK
logging - it was replaced bySentry.configuration.sdk_loggerand should be used only by the SDK
itself and its extensions. -
New configuration option called
active_job_report_on_retry_errorwhich enables reporting errors on each retry error (#2617)
Bug Fixes
- Gracefully fail on malformed utf-8 breadcrumb message (#2582)
- Fixes #2376
- Fix breadcrumb serialization error message to be an object (#2584)
- Fixes #2478
- Fix compatibility issues with sidekiq-cron 2.2.0 (#2591)
- Update sentry-sidekiq to work correctly with Sidekiq 8.0 and its new timestamp format (#2570)
- Ensure we capture exceptions after each job retry (#2597)
Internal
- Remove
user_segmentfrom DSC (#2586) - Replace
loggerwithsdk_logger(#2621) Sentry.loggeris now deprecated whenenable_logsis turned off. It's original behavior was ported toSentry.configuration.sdk_logger. Please notice that this logger is internal and should only be used for SDK-specific logging needs. (#2621)
5.23.0
Features
- Add correct breadcrumb levels for 4xx/5xx response codes (#2549)
Bug Fixes
- Fix argument serialization for ranges that consist of ActiveSupport::TimeWithZone (#2548)
- Prevent starting Vernier in nested transactions (#2528)
- Fix TypeError when Resque.inline == true (#2564)
Internal
- Use
File.openinLineCache(#2566) - Update java backtrace regexp (#2567)
- Stop byteslicing empty strings in breadcrumbs (#2574)
Miscellaneous
- Deprecate
enable_tracingin favor oftraces_sample_rate = 1.0#2535
5.22.4
Bug Fixes
- Fix handling of cron with tz in Cron::Job (#2530)
- Revert "[rails] support string errors in error reporter (#2464)" (#2533)
- Removed unnecessary warning about missing
stackprofwhen Vernier is configured as the profiler (#2537) - Fix regression with CheckInEvent in before_send (#2541)
- Fixes #2540
Internal
5.22.3
5.22.2
Features
- Improve the accuracy of duration calculations in cron jobs monitoring (#2471)
- Use attempt_threshold to skip reporting on first N attempts (#2503)
- Support
code.namespacefor Ruby 3.4+ stacktraces (#2506)
Bug fixes
- Default to
internal_errorerror type for OpenTelemetry spans #2473 - Improve
before_sendandbefore_send_transaction's return value handling (#2504) - Fix a crash when calling
Sentry.get_main_hubin a trap context (#2510) - Use
URI::RFC2396_PARSER.escapeexplicitly to remove warning logs to stderr (#2509)
Internal
5.22.1
5.22.0
op in transaction context from "queue.sidekiq" to "queue.process". If you rely on this value (e.g. for sampling as described here), then you need to update your configuration accordingly.
Features
-
Add
include_sentry_eventmatcher for RSpec #2424 -
Add support for Sentry Cache instrumentation, when using Rails.cache #2380
-
Add support for Queue Instrumentation for Sidekiq. #2403
-
Add support for string errors in error reporter (#2464)
-
Reset
trace_idand add root transaction for sidekiq-cron #2446 -
Add support for Excon HTTP client instrumentation (#2383)
Note: MemoryStore and FileStore require Rails 8.0+
Bug Fixes
- Fix Vernier profiler not stopping when already stopped #2429
- Fix
send_default_piihandling in rails controller spans #2443- Fixes #2438
- Fix
RescuedExceptionInterceptorto handle an empty configuration #2428 - Add mutex sync to
SessionFlusheraggregates #2469- Fixes #2468
- Fix sentry-rails' backtrace cleaner issues (#2475)
- Fixes #2472
5.21.0
Features
-
Experimental support for multi-threaded profiling using Vernier (#2372)
You can have much better profiles if you're using multi-threaded servers like Puma now by leveraging Vernier.
To use it, first addvernierto yourGemfileand make sure it is loaded beforesentry-ruby.# Gemfile gem 'vernier' gem 'sentry-ruby'
Then, set a
profiles_sample_rateand the newprofiler_classconfiguration in your sentry initializer to use the new profiler.# config/initializers/sentry.rb Sentry.init do |config| # ... config.profiles_sample_rate = 1.0 config.profiler_class = Sentry::Vernier::Profiler end