Requested by: @0xadam-brown
Merge target: (default)
Quick links:
Assign the accepted label to this issue to approve the release.
Targets
Checked targets will be skipped (either already published or user-requested skip). Uncheck to retry a target.
📋 Changelog
Behavioral Changes
- Measure HTTP rate-limit backoff on a monotonic clock instead of the wall clock, so that a device time change no longer lifts or extends an active rate limit (#6030)
Features
- Add Android SDK support for reporting
MemoryLimiter app exits recovered from ApplicationExitInfo (#6111).
- Sentry can now configure Log4j2 automatically for Spring Boot 4 when
sentry-log4j2 is on the classpath and Log4j2 Core is the active logging backend (#5403)
- Enable automatic appender registration with:
sentry.logging.enabled=true
Automatic registration is disabled by default for now and will be enabled by default in the next major release.
- The appender is attached to the root logger by default. To attach it to specific loggers instead, configure one or more non-overlapping logger names:
sentry.logging.loggers[0]=com.example
sentry.logging.loggers[1]=org.example
- Configure the minimum level for creating breadcrumbs. The default is
INFO:
sentry.logging.minimum-breadcrumb-level=INFO
- Configure the minimum level for creating Sentry error events. The default is
ERROR:
sentry.logging.minimum-event-level=ERROR
- Configure the minimum level for sending Sentry structured logs. The default is
INFO:
sentry.logging.minimum-level=INFO
Structured logs must also be enabled:
- Sentry can now configure Log4j2 automatically for Spring Boot 3 when
sentry-log4j2 is on the classpath and Log4j2 Core is the active logging backend (#6072)
- Disabled by default for now; enable it and configure levels the same way as described in the Spring Boot 4 entry above (
sentry.logging.enabled=true)
Fixes
- Keep resolving the server name after
Sentry.close() or a re-init. Closing the SDK shut down the shared hostname cache for the life of the process, so server_name silently froze at the value it had last resolved (#6119)
- Order breadcrumbs by the timestamp they carry rather than by when they were created in the current process, so breadcrumbs restored from disk or handed over by a hybrid SDK no longer sort as if they had just happened (#6097)
Internal
- Deprecate
RateLimiter(ICurrentDateProvider, SentryOptions) in favor of RateLimiter(SentryOptions), whose backoff is measured on a monotonic ticker (#6030)
- Deprecate
AndroidCurrentDateProvider.getInstance() in favor of MonotonicTicker, which counts time spent in deep sleep and cannot be confused with the epoch-based CurrentDateProvider (#6103)
Requested by: @0xadam-brown
Merge target: (default)
Quick links:
Assign the accepted label to this issue to approve the release.
Targets
Checked targets will be skipped (either already published or user-requested skip). Uncheck to retry a target.
📋 Changelog
Behavioral Changes
Features
MemoryLimiterapp exits recovered fromApplicationExitInfo(#6111).sentry-log4j2is on the classpath and Log4j2 Core is the active logging backend (#5403)sentry.logging.enabled=trueINFO:sentry.logging.minimum-breadcrumb-level=INFOERROR:sentry.logging.minimum-event-level=ERRORINFO:sentry.logging.minimum-level=INFOsentry.logs.enabled=truesentry-log4j2is on the classpath and Log4j2 Core is the active logging backend (#6072)sentry.logging.enabled=true)Fixes
Sentry.close()or a re-init. Closing the SDK shut down the shared hostname cache for the life of the process, soserver_namesilently froze at the value it had last resolved (#6119)Internal
RateLimiter(ICurrentDateProvider, SentryOptions)in favor ofRateLimiter(SentryOptions), whose backoff is measured on a monotonic ticker (#6030)AndroidCurrentDateProvider.getInstance()in favor ofMonotonicTicker, which counts time spent in deep sleep and cannot be confused with the epoch-basedCurrentDateProvider(#6103)