sentry/sentry-symfony
The official Sentry SDK for Symfony. Install via Composer, add your SENTRY_DSN to .env, and capture exceptions from anywhere in your app. Get real-time error tracking and performance monitoring with minimal setup.
The Sentry SDK team is happy to announce the immediate availability of Sentry Symfony SDK v5.14.0.
Add the data_collection option to control which potentially sensitive data the SDK attaches to events and spans. (#1087)
sentry:
options:
data_collection:
user_info: true
http_headers:
mode: allowList
terms:
- x-request-id
http_bodies: []
database_query_data: false
sentry-php version to 4.34.0. (#1087)The Sentry SDK team is happy to announce the immediate availability of Sentry Symfony SDK v5.13.0.
sentry-php version to 4.31.0. (#1053)The Sentry SDK team is happy to announce the immediate availability of Sentry Symfony SDK v5.12.0.
guzzlehttp/psr7 3.x for Guzzle 8 compatibility. (#1046)The Sentry SDK team is happy to announce the immediate availability of Sentry Symfony SDK v5.11.0.
sentry_trace_meta() and sentry_baggage_meta() helpers. (#1025)RequestFetcher during kernel termination even when no transaction is set on the hub. (#1026)security.untracked_token_storage service in LoginListener. (#1028)The Sentry SDK team is happy to announce the immediate availability of Sentry Symfony SDK v5.10.0.
strict_trace_continuation and org_id to continue incoming traces only when they belong to the same Sentry organization. (#1002)ConsoleInputSerializer to capture console command arguments and options via class_serializers. (#1007)log_flush_threshold to flush logs once a configured batch size is reached. (#1012)Sentry\Integration\OTLPIntegration. (#1014)tracing.dbal.ignore_prepare_spans to suppress db.sql.prepare spans for prepared queries. (#1016)messenger.isolate_context_by_message to prevent scope, logs, and metrics data from leaking across messages. (#997)traceparent header. (#1005)sentry-php version to 4.23.0. (#1012)The Sentry SDK team is happy to announce the immediate availability of Sentry Symfony SDK v5.9.0.
sentry-php version to 4.20.0. (#996)The Sentry SDK team is happy to announce the immediate availability of Sentry Symfony SDK v5.8.3.
The Sentry SDK team is happy to announce the immediate availability of Sentry Symfony SDK v5.8.2.
symfony/yaml to a non-dev dependency. (#983)The Sentry SDK team is happy to announce the immediate availability of Sentry Symfony SDK v5.8.1.
before_send_metric and enable_metrics. (#981)The Sentry SDK team is happy to announce the immediate availability of Sentry Symfony SDK v5.8.0.
// Counter metric
\Sentry\trace_metrics()->count('test-counter', 10, ['my-attribute' => 'foo']);
// Gauge metric
\Sentry\trace_metrics()->gauge('test-gauge', 50.0, ['my-attribute' => 'foo'], \Sentry\Unit::millisecond());
// Distribution metric
\Sentry\trace_metrics()->distribution('test-distribution', 20.0, ['my-attribute' => 'foo'], \Sentry\Unit::kilobyte());
The Sentry SDK team is happy to announce the immediate availability of Sentry Symfony SDK v5.6.0.
max_breadcrumbs option. (#953)services:
Sentry\SentryBundle\Monolog\LogsHandler:
arguments:
- 'info'
# or using PSR constants
services:
Sentry\SentryBundle\Monolog\LogsHandler:
arguments:
- !php/const Psr\Log\LogLevel::INFO
// or via PHP config
$container->services()
->set(\Sentry\SentryBundle\Monolog\LogsHandler::class)
->args([\Monolog\Level::Info]);
The Sentry SDK team is happy to announce the immediate availability of Sentry Symfony SDK v5.5.0.
sentry:
messenger:
isolate_breadcrumbs_by_message: true
services:
App\IntegrationCallback:
factory: ['App\IntegrationCallback', 'factory']
sentry:
options:
integrations: 'App\IntegrationCallback'
The Sentry SDK team is happy to announce the immediate availability of Sentry Symfony SDK v5.4.1.
The Sentry SDK team is happy to announce the immediate availability of Sentry Symfony SDK v5.4.0.
sentry:
options:
enable_logs: true
services:
Sentry\SentryBundle\Monolog\LogsHandler:
arguments:
- !php/const Monolog\Logger::INFO
monolog:
handlers:
sentry_logs:
type: service
id: Sentry\SentryBundle\Monolog\LogsHandler
The Sentry SDK team is happy to announce the immediate availability of Sentry Symfony SDK v5.3.0.
The Sentry SDK team is happy to announce the immediate availability of Sentry Symfony SDK v5.2.0.
Allow to configure the logger via the sentry.yaml configuration file (#899)
sentry:
dsn: "%env(SENTRY_DSN)%"
options:
logger: "sentry.logger"
services:
sentry.logger:
class: 'Sentry\Logger\DebugFileLogger'
arguments:
$filePath: '../../var/log/sentry.log'
symfony/security-core and symfony/security-http as dependencies (#912)The Sentry SDK team is thrilled to announce the immediate availability of Sentry Symfony SDK v5.0.0.
Please refer to the UPGRADE-5.0.md guide for a complete list of breaking changes.
This version adds support for the underlying Sentry PHP SDK v4.0. Please refer to the PHP SDK sentry-php/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 the ignore_exceptions option instead.
Previously, both Symfony\Component\ErrorHandler\Error\FatalError and Symfony\Component\Debug\Exception\FatalErrorException were ignored by default.
To continue ignoring these exceptions, make the following changes to the config file:
// config/packages/sentry.yaml
sentry:
options:
ignore_exceptions:
- 'Symfony\Component\ErrorHandler\Error\FatalError'
- 'Symfony\Component\Debug\Exception\FatalErrorException'
This option performs an is_a check now, so you can also ignore more generic exceptions.
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', '[email protected]', null, ['role' => User::admin()]);
Metrics are automatically sent to Sentry at the end of a request, hooking into Symfony's kernel.terminate event.
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 default cURL HTTP client (#1589)
The SDK now ships with its own HTTP client based on cURL. A few new options were added.
// config/packages/sentry.yaml
sentry:
options:
- 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.
To use a different transport, you may use the transport option. A custom transport must implement the TransportInterface.
If you use the transport option, the http_client option has no effect.
php-http/message-factory was removed.The Sentry SDK team is happy to announce the immediate availability of Sentry Symfony SDK v4.13.2.
symfony/http-client (#797)The Sentry SDK team is happy to announce the immediate availability of Sentry Symfony SDK v4.13.1.
http_client service is registered (#792)The Sentry SDK team is happy to announce the immediate availability of Sentry Symfony SDK v4.10.0.
Tracing without Performance (#742)
The SDK will now continue a trace from incoming HTTP requests, even if performance is not enabled. 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().
Add ignore_exceptions and ignore_transactions options (#724)
The Sentry SDK team is happy to announce the immediate availability of Sentry Symfony SDK v4.9.2.
We decided to revert two previous PRs that aimed to remove deprecation warnings during test runs (#736)
We are sorry for the inconvenience caused by these changes.
The Sentry SDK team is happy to announce the immediate availability of Sentry Symfony SDK v4.9.1.
TracingDriverForV32 by adding VersionAwarePlatformDriver::createDatabasePlatformForVersion (#731)The Sentry SDK team is happy to announce the immediate availability of Sentry Symfony SDK v4.9.0.
Add a new Doctrine DBAL tracing driver that does not implement the deprecated VersionAwarePlatformDriver (#723)
The driver is automatically picked if doctrine/dbal version 3.2.0 or higher is installed.
http_connect_timeoutand http_timeout options (#721)^3.19 (#725)The Sentry SDK team is happy to announce the immediate availability of Sentry Symfony SDK v4.8.0.
Set cache keys as span descriptions (#677)
To better identify the source of a cache operation, we now set the cache key as the description of cache op spans.
The Sentry SDK team is happy to announce the immediate availability of Sentry Symfony SDK v4.7.0.
Add profiles_sample_rate config option (#698)
With this new config option, you can now use our new profiling feature in Symfony as well. Please consult https://github.com/getsentry/sentry-php/releases/3.15.0 for setup instructions.
The Sentry SDK team is happy to announce the immediate availability of Sentry Symfony SDK v4.6.0. This release contains a colorful bouquet of new features.
Report exceptions to Sentry as unhandled by default (#674)
All unhandled exceptions will now be marked as handled: false. You can query for such events on the issues list page,
by searching for error.handled:false.
Exceptions from messages which will be retried are sent to Sentry as handled (#674)
All unhandled exceptions happening on the message bus will now be unpacked and reported individually.
The WorkerMessageFailedEvent::willRetry property is used to determine the handled value of the event sent to Sentry.
Add register_error_handler config option (#687)
With this option, you can disable the global error and exception handlers of the base PHP SDK. If disabled, only events logged by Monolog will be sent to Sentry.
sentry:
dsn: '%env(SENTRY_DSN)%'
register_error_listener: false
register_error_handler: false
monolog:
handlers:
sentry:
type: sentry
level: !php/const Monolog\Logger::ERROR
hub_id: Sentry\State\HubInterface
Add before_send_transaction (#691)
Similar to before_send, you can now apply additional logic for transaction events.
You can mutate the transaction event before it is sent to Sentry. If your callback returns null,
the event is dropped.
sentry:
options:
before_send_transaction: 'sentry.callback.before_send_transaction'
services:
sentry.callback.before_send_transaction:
class: 'App\Service\Sentry'
factory: [ '[@App](https://github.com/App)\Service\Sentry', 'getBeforeSendTransaction' ]
<?php
namespace App\Service;
class Sentry
{
public function getBeforeSendTransaction(): callable
{
return function (\Sentry\Event $event): ?\Sentry\Event {
return $event;
};
}
}
Use the _route attribute as the transaction name (#692)
If you're using named routes, the SDK will default to use this attribute as the transaction name.
With this change, you should be able to see a full list of your transactions on the performance page,
instead of << unparameterized >>.
You may need to update your starred transactions as well as your dashboards due to this change.
How can I help you explore Laravel packages today?