Releases: getsentry/sentry-php
4.3.0
The Sentry SDK team is happy to announce the immediate availability of Sentry PHP SDK v4.3.0.
Features
-
Add support for Sentry Developer Metrics (#1619)
use function Sentry\metrics; // Add 4 to a counter named hits metrics()->increment(key: 'hits', value: 4); // Add 25 to a distribution named response_time with unit milliseconds metrics()->distribution(key: 'response_time', value: 25, unit: MetricsUnit::millisecond()); // Add 2 to gauge named parallel_requests, tagged with type: "a" metrics()->gauge(key: 'parallel_requests', value: 2, tags: ['type': 'a']); // Add a user's email to a set named users.sessions, tagged with role: "admin" metrics()->set('users.sessions, 'jane.doe@example.com', null, ['role' => User::admin()]); // Flush the metrics to Sentry metrics()->flush(); // We recommend registering the flushing in a shutdown function register_shutdown_function(static fn () => metrics()->flush());
To learn more about Sentry Developer Merics, join the discussion at #1666.
Bug Fixes
- Disallow to seralize the
HubAdapter::class
(#1663) - Do not overwrite trace context on event (#1668)
- Serialize breadcrumb data to display correct in the Sentry UI (#1669)
Misc
- Remove the
final
keyword fromHub::class
,Client::class
andScope::class
(#1665)
4.2.0
The Sentry SDK team is happy to announce the immediate availability of Sentry PHP SDK v4.2.0.
Features
-
Add a config option to allow overriding the Spotlight url (#1659)
Sentry\init([ 'spotlight_url' => 'http://localhost:8969', ]);
Bug Fixes
-
Restore setting the
logger
value on the event payload (#1657) -
Only apply the
sample_rate
on error/message events (#1662)This fixes an issue where Cron Check-Ins were wrongly sampled out if a
sample_rate
lower than1.0
is used.
Misc
- Remove the
@internal
annotation fromClientBuilder::class
(#1661)
4.1.0
The Sentry SDK team is happy to announce the immediate availability of Sentry PHP SDK v4.1.0.
Features
-
Add support for Spotlight (#1647)
Spotlight is Sentry for Development. Inspired by an old project, Django Debug Toolbar. Spotlight brings a rich debug overlay into development environments, and it does it by leveraging the existing power of Sentry's SDKs.
To learn more about Spotlight, go to https://spotlightjs.com/.
Misc
- Normalize
response
status (#1644)
4.0.1
3.22.1
4.0.0
The Sentry SDK team is thrilled to announce the immediate availability of Sentry PHP SDK v4.0.0.
Breaking Change
Please refer to the UPGRADE-4.0.md guide for a complete list of breaking changes.
-
This version exclusively uses the envelope endpoint to send event data to Sentry.
If you are using sentry.io, no action is needed.
If you are using an on-premise/self-hosted installation of Sentry, the minimum requirement is now version>= v20.6.0
. -
You need to have
ext-curl
installed to use the SDK. -
The
IgnoreErrorsIntegration
integration was removed. Use theignore_exceptions
option instead.Sentry\init([ 'ignore_exceptions' => [BadThingsHappenedException::class], ]);
This option performs an
is_a
check now, so you can also ignore more generic exceptions.
Features
-
Add new fluent APIs (#1601)
// Before $transactionContext = new TransactionContext(); $transactionContext->setName('GET /example'); $transactionContext->setOp('http.server'); // After $transactionContext = (new TransactionContext()) ->setName('GET /example'); ->setOp('http.server');
-
Simplify the breadcrumb API (#1603)
// Before \Sentry\addBreadcrumb( new \Sentry\Breadcrumb( \Sentry\Breadcrumb::LEVEL_INFO, \Sentry\Breadcrumb::TYPE_DEFAULT, 'auth', // category 'User authenticated', // message (optional) ['user_id' => $userId] // data (optional) ) ); // After \Sentry\addBreadcrumb( category: 'auth', message: 'User authenticated', // optional metadata: ['user_id' => $userId], // optional level: Breadcrumb::LEVEL_INFO, // set by default type: Breadcrumb::TYPE_DEFAULT, // set by default );
-
New
logger
option (#1625)To make it easier to debug the internals of the SDK, the
logger
option now accepts aPsr\Log\LoggerInterface
instance.
We do provide two implementations,Sentry\Logger\DebugFileLogger
andSentry\Logger\DebugStdOutLogger
.// This logs messages to the provided file path Sentry\init([ 'logger' => new DebugFileLogger(filePath: ROOT . DS . 'sentry.log'), ]); // This logs messages to stdout Sentry\init([ 'logger' => new DebugStdOutLogger(), ]);
-
New default cURL HTTP client (#1589)
The SDK now ships with its own HTTP client based on cURL. A few new options were added.
Sentry\init([ 'http_proxy_authentication' => 'username:password', // user name and password to use for proxy authentication 'http_ssl_verify_peer' => false, // default true, verify the peer's SSL certificate 'http_compression' => false, // default true, http request body compression ]);
To use a different client, you may use the
http_client
option.use Sentry\Client; use Sentry\HttpClient\HttpClientInterface; use Sentry\HttpClient\Request; use Sentry\HttpClient\Response; use Sentry\Options; $httpClient = new class() implements HttpClientInterface { public function sendRequest(Request $request, Options $options): Response { // your custom implementation return new Response($response->getStatusCode(), $response->getHeaders(), ''); } }; Sentry\init([ 'http_client' => $httpClient, ]);
To use a different transport, you may use the
transport
option. A custom transport must implement theTransportInterface
.
If you use thetransport
option, thehttp_client
option has no effect.
Misc
- The abandoned package
php-http/message-factory
was removed.
3.22.0
3.21.0
The Sentry SDK team is happy to announce the immediate availability of Sentry PHP SDK v3.21.0.
Features
-
Add
Sentry::captureCheckIn()
(#1573)Sending check-ins from the SDK is now simplified.
$checkInId = Sentry\captureCheckIn( slug: 'monitor-slug', status: CheckInStatus::inProgress() ); // do something Sentry\captureCheckIn( checkInId: $checkInId, slug: 'monitor-slug', status: CheckInStatus::ok() );
You can also pass in a
monitorConfig
object as well as theduration
. -
Undeprecate the
tags
option (#1561)You can now set tags that are applied to each event when calling
Sentry::init()
.Sentry\init([ 'tags' => [ 'foo' => 'bar', ], ])
-
Apply the
prefixes
option to profiling frames (#1568)If you added the
prefixes
option when callingSentry::init()
, this option will now also apply to profile frames.Sentry\init([ 'prefixes' => ['/var/www/html'], ])
Misc
3.20.1
3.20.0
The Sentry SDK team is happy to announce the immediate availability of Sentry PHP SDK v3.20.0.
Features
-
Tracing without Performance (#1516)
You can now set up distributed tracing without the need to use the performance APIs.
This allows you to connect your errors that hail from other Sentry instrumented applications to errors in your PHP application.To continue a trace, fetch the incoming Sentry tracing headers and call
\Sentry\continueTrace()
as early as possible in the request cycle.$sentryTraceHeader = $request->getHeaderLine('sentry-trace'); $baggageHeader = $request->getHeaderLine('baggage'); continueTrace($sentryTraceHeader, $baggageHeader);
To continue a trace outward, you may attach the Sentry tracing headers to any HTTP client request.
You can fetch the required header values by calling\Sentry\getBaggage()
and\Sentry\getTraceparent()
. -
Upserting Cron Monitors (#1511)
You can now create and update your Cron Monitors programmatically with code.
Read more about this in our docs.