Version 2.x
is a complete rewrite of the existing code base. The public API has been trimmed down to a minimum.
The preferred way of using the SDK is through our "Static API" / global functions.
Here is a simple example to get started:
\Sentry\init(['dsn' => '___PUBLIC_DSN___' ]);
\Sentry\configureScope(function (\Sentry\State\Scope $scope): void {
$scope->setTag('page_locale', 'de-at');
$scope->setUser(['email' => '[email protected]']);
$scope->setLevel(\Sentry\Severity::warning());
$scope->setExtra('character_name', 'Mighty Fighter');
});
// The following capture call will contain the data from the previous configured Scope
try {
thisFunctionThrows(); // -> throw new \Exception('foo bar');
} catch (\Exception $exception) {
\Sentry\captureException($exception);
}
\Sentry\addBreadcrumb(new Breadcrumb(Breadcrumb::LEVEL_ERROR, Breadcrumb::TYPE_ERROR, 'error_reporting', 'Message'));
The call to \Sentry\init()
sets up global exception/error handlers and any uncaught error will be sent to Sentry.
Version >= 2.0
conforms to the Unified SDK API.
It has a fundamentally different concept, it's no longer recommended to just use a Client
unless you really know what you are doing.
Please visit our docs to get a full overview.
-
The
exclude
option has been removed. -
The
excluded_app_path
option has been renamed toin_app_exclude
-
The
send_callback
option has been renamed tobefore_send
. -
The
name
option has been renamed toserver_name
. -
The
secret_key
option has been removed. -
The
public_key
option has been removed. -
The
message_limit
option has been removed. -
The
project
option has been removed. -
The
severity_map
option has been removed. -
The
ignore_server_port
option has been removed. -
The
trust_x_forwarded_proto
option has been removed. -
The
mb_detect_order
option has been removed. -
The
trace
option has been removed. -
The
tags
option has been removed in favour of setting them in the scope. -
The
site
option has been removed. -
The
extra_data
option has been removed in favour of setting additional data in the scope. -
The
curl_method
option has been removed. -
The
curl_path
option has been removed. -
The
curl_ipv4
option has been removed. -
The
curl_ssl_version
option has been removed. -
The
verify_ssl
option has been removed. -
The
ca_cert
option has been removed. -
The
proxy
option has been removed in favour of leaving to the user the burden of configuring the HTTP client options using a custom client. -
The
processors
option has been removed. -
The
processors_options
option has been removed. -
The
transport
option has been removed in favour of setting it using the client builder. -
The
install_default_breadcrumb_handlers
option has been removed. -
The
serialize_all_object
option has been removed. -
The
context_lines
option has been added to configure the number of lines of code context to capture. -
The
max_value_length
option has been added to set an upper bound to the length of serialized items. -
The
server
option has been renamed todsn
.
-
All the classes have been renamed and moved around to follow the PSR-4 convention and
final
have been added where appropriate. -
The
Raven_Autoloader
class has been removed. To install and use the library you are required to use Composer. -
The
Raven_Util
class has been removed. -
The
Raven_Compat
class has been removed. -
The
Raven_Util
class has been removed. -
The
Raven_CurlHandler
class has been removed. -
The
Raven_TransactionStack
class has been removed. -
The
Raven_Exception
class has been removed.
-
The constructor of the
Client
(beforeRaven_Client
) class has changed its signature and now requires to be passed a configuration object, an instance of a transport and an event factory.Before:
public function __construct($options_or_dsn = null, $options = array()) { // ... }
After:
public function __construct(Options $options, TransportInterface $transport, EventFactoryInterface $eventFactory) { // ... }
The suggested way to create your own instance of the client is to use the provided builder (ClientBuilder
) that will take care of instantiating a few dependencies like the PSR-7 factories and the HTTP client.
-
The method
Raven_Client::close_all_children_link
has been removed and there -
The methods
Raven_Client::getRelease
andRaven_Client::setRelease
have been removed. You should useOptions::getRelease
andOptions::setRelease
instead.Before:
$client->getRelease(); $client->setRelease(...);
After:
use Sentry\State\Hub; $options = Hub::getCurrent()->getClient()->getOptions(); $options->getRelease(); $options->setRelease(...);
-
The methods
Raven_Client::getEnvironment
andRaven_Client::setEnvironment
have been removed. You should useOptions::getEnvironment
andOptions::setEnvironment
instead.Before:
$client->getEnvironment(); $client->setEnvironment(...);
After:
use Sentry\State\Hub; $options = Hub::getCurrent()->getClient()->getOptions(); $options->getEnvironment(); $options->setEnvironment(...);
-
The method
Raven_Client::getInputStream
has been removed. -
The methods
Raven_Client::getDefaultPrefixes
andRaven_Client::setPrefixes
have been removed. You should useOptions::getPrefixes
andOptions::setPrefixes
instead.Before:
$client->getPrefixes(); $client->setPrefixes(...);
After:
use Sentry\State\Hub; $options = Hub::getCurrent()->getClient()->getOptions(); $options->getPrefixes(); $options->setPrefixes(...);
-
The methods
Raven_Client::getAppPath
andRaven_Client::setAppPath
have been removed. You should useOptions::getProjectRoot
andOptions::setProjectRoot
instead.Before:
$client->getAppPath(); $client->setAppPath(...);
After:
use Sentry\State\Hub; $options = Hub::getCurrent()->getClient()->getOptions(); $options->getProjectRoot(); $options->setProjectRoot(...);
-
The methods
Raven_Client::getExcludedAppPaths
andRaven_Client::setExcludedAppPaths
have been removed. You should useOptions::getInAppExcludedPaths
andOptions::setInAppExcludedPaths
instead.Before:
$client->getExcludedAppPaths(); $client->setExcludedAppPaths(...);
After:
use Sentry\State\Hub; $options = Hub::getCurrent()->getClient()->getOptions(); $options->getExcludedAppPaths(); $options->setExcludedAppPaths(...);
-
The methods
Raven_Client::getSendCallback
andRaven_Client::setSendCallback
have been removed. You should useOptions::getBeforeSendCallback
andOptions::setBeforeSendCallback
instead.Before:
$client->getSendCallback(); $client->setSendCallback(...);
After:
use Sentry\State\Hub; $options = Hub::getCurrent()->getClient()->getOptions(); $options->getBeforeSendCallback(); $options->setBeforeSendCallback(...);
-
The method
Raven_Client::getServerEndpoint
has been removed. You should useOptions::getDsn
instead.Before:
$client->getServerEndpoint();
After:
use Sentry\State\Hub; $options = Hub::getCurrent()->getClient()->getOptions(); $options->getDsn();
-
The methods
Raven_Client::getTransport
andRaven_Client::setTransport
have been removed. The transport is now a required dependency of the client and must be passed as required constructor argument. -
The method
Raven_Client::getUserAgent
has been removed. -
The method
Raven_Client::getErrorTypes
has been removed. You should useConfiguration::getErrorTypes
instead.Before:
$client->getErrorTypes();
After:
$client->getConfig()->getErrorTypes();
-
The
Raven_Client::getDefaultProcessors
method has been removed. -
The
Raven_Client::setProcessorsFromOptions
method has been removed. -
The
Raven_Client::getLastEventID
method has been removed. The ID of the last event that was captured is now returned by each of theClient::capture*
methods. You can also useHub::getCurrent()->getLastEventId()
. -
The
Raven_Client::parseDSN
method has been removed. -
The
Raven_Client::getLastError
method has been removed. -
The
Raven_Client::getIdent
method has been removed. -
The
Raven_Client::registerShutdownFunction
method has been removed. -
The
Raven_Client::is_http_request
method has been removed. -
The
Raven_Client::get_http_data
method has been removed. -
The
Raven_Client::get_user_data
method has been removed. -
The
Raven_Client::get_extra_data
method has been removed. -
The
Raven_Client::get_default_data
method has been removed. -
The
Raven_Client::message
method has been removed. -
The
Raven_Client::exception
method has been removed. -
The
Raven_Client::captureQuery
method has been removed. -
The
Raven_Client::captureMessage
method has changed its signature.Before:
public function captureMessage($message, $params = array(), $data = array(), $stack = false, $vars = null) { // ... }
After:
public function captureMessage(string $message, ?Severity $level = null, ?Scope $scope = null): ?string { // ... }
-
The
Raven_Client::captureException
method has changed its signature.Before:
public function captureException($exception, $data = null, $logger = null, $vars = null) { // ... }
After:
public function captureException(\Throwable $exception, ?Scope $scope = null): ?string { // ... }
-
The
Raven_Client::captureLastError
method has changed its signature.Before:
public function captureLastError() { // ... }
After:
public function captureLastError(?Scope $scope = null): ?string { // ... }
-
The method
Raven_Client::capture
has been removed. -
The method
Raven_Client::sanitize
has been removed. -
The method
Raven_Client::process
has been removed. -
The method
Raven_Client::sendUnsentErrors
has been removed. -
The method
Raven_Client::encode
has been removed. -
The method
Raven_Client::send
has been removed. -
The method
Raven_Client::send_remote
has been removed. -
The method
Raven_Client::get_default_ca_cert
has been removed. -
The method
Raven_Client::get_curl_options
has been removed. -
The method
Raven_Client::send_http
has been removed. -
The method
Raven_Client::buildCurlCommand
has been removed. -
The method
Raven_Client::send_http_asynchronous_curl_exec
has been removed. -
The method
Raven_Client::send_http_synchronous
has been removed. -
The method
Raven_Client::get_auth_header
has been removed. -
The method
Raven_Client::getAuthHeader
has been removed. -
The method
Raven_Client::uuid4
has been removed. -
The method
Raven_Client::get_current_url
has been removed. -
The method
Raven_Client::isHttps
has been removed. -
The method
Raven_Client::translateSeverity
has been removed. -
The method
Raven_Client::registerSeverityMap
has been removed. -
The method
Raven_Client::set_user_data
has been removed. -
The method
Raven_Client::onShutdown
has been removed. -
The method
Raven_Client::createProcessors
has been removed. -
The method
Raven_Client::setProcessors
has been removed. -
The method
Raven_Client::getLastSentryError
has been removed. -
The method
Raven_Client::getShutdownFunctionHasBeenSet
has been removed. -
The method
Raven_Client::close_curl_resource
has been removed. -
The method
Raven_Client::setSerializer
has been removed. You can set it using the client builder.Before:
$client = new Raven_Client(); $client->setSerializer(...);
After:
use Sentry\ClientBuilder; $clientBuilder = ClientBuilder::create(); $clientBuilder->setSerializer(...);
-
The method
Raven_Client::setReprSerializer
has been removed. You can set it using the client builder.Before:
$client = new Raven_Client(); $client->setSerializer(...);
After:
use Sentry\ClientBuilder; $clientBuilder = ClientBuilder::create(); $clientBuilder->setRepresentationSerializer(...);
-
The method
Raven_Client::cleanup_php_version
has been removed. -
The method
Raven_Client::registerDefaultBreadcrumbHandlers
has been removed. -
The
Raven_Client::user_context
method has been removed. You can set this data in the current active scope.Before:
$client->user_context(array('foo', 'bar'));
After:
use Sentry\State\Hub; use Sentry\State\Scope; Hub::getCurrent()->configureScope(function (Scope $scope): void { $scope->setUser(['email' => '[email protected]']); });
-
The
Raven_Client::tags_context
method has been removed. You can set this data in the current active scope.Before:
$client->tags_context(array('foo', 'bar'));
After:
use Sentry\State\Hub; use Sentry\State\Scope; Hub::getCurrent()->configureScope(function (Scope $scope): void { $scope->setTag('tag_name', 'tag_value'); });
-
The
Raven_Client::extra_context
method has been removed. You can set this data in the current active scope.Before:
$client->extra_context(array('foo' => 'bar'));
After:
use Sentry\State\Hub; use Sentry\State\Scope; Hub::getCurrent()->configureScope(function (Scope $scope): void { $scope->setExtra('extra_key', 'extra_value'); });
-
The method
Raven_Client::install
has been removed. The error handler is registered automatically when using theExceptionListenerIntegration
andErrorListenerIntegration
integrations (which are enabled by default).
-
The
Raven_Processor_RemoveCookiesProcessor
class has been removed. -
The
Raven_Processor_SanitizeStacktraceProcessor
class has been removed. -
The
Raven_Processor_SanitizeHttpHeadersProcessor
class has been removed. -
The
Raven_Processor_RemoveHttpBodyProcessor
class has been removed. -
The
Raven_Processor_SanitizeDataProcessor
class has been removed. -
The
Raven_Processor
class has been removed.
-
The
Raven_Context
class has been renamed toContext
. -
The
tags
,extra
anduser
properties of theRaven_Context
class have been removed. Each instance of the new class represents now a single context type at once.
-
The
Raven_Breadcrumbs_ErrorHandler
class has been removed. -
The
Raven_Breadcrumbs_MonologHandler
class has been removed. -
The
Raven_ErrorHandler
class has been renamed toErrorHandler
and has been madefinal
. -
The method
Raven_ErrorHandler::handleError
has changed its signature by removing the$context
argument and it has been marked asinternal
to make it clear that it should not be called publicly and its method visibility is subject to changes without any notice. -
The methods
Raven_ErrorHandler::registerErrorHandler
,Raven_ErrorHandler::registerExceptionHandler
andRaven_ErrorHandler::registerShutdownFunction
have been removed. You should use theErrorHandler::register
method instead, but note that it registers all error handlers (error, exception and fatal error) at once and there is no way anymore to only use one of them.Before:
$errorHandler = new Raven_ErrorHandler($client); $errorHandler->registerErrorHandler(); $errorHandler->registerExceptionHandler(); $errorHandler->registerShutdownFunction();
After:
use Sentry\ErrorHandler; ErrorHandler::register(function (\Throwable $exception): void { // ... });
-
The method
Raven_ErrorHandler::handleError
has changed its signature by removing the$context
argument and it has been marked asinternal
to make it clear that it should not be called publicly and its method visibility is subject to changes without any notice. -
The method
Raven_ErrorHandler::handleFatalError
has changed its signature by adding an optional argument named$error
and it has been marked asinternal
to make it clear that it should not be called publicly and its method visibility is subject to changes without any notice. -
The method
Raven_ErrorHandler::handleException
has changed its signature by removing the$isError
and$vars
arguments and it has been marked asinternal
to make it clear that it should not be called publicly and its method visibility is subject to changes without any notice. -
The method
Raven_ErrorHandler::bitwiseOr
has been removed and there is no replacement for it. -
The method
Raven_ErrorHandler::shouldCaptureFatalError
has been removed and there is no replacement for it.
-
The
Raven_Serializer
class has been renamed toSerializer
and its constructor changed signature.Before:
public function __construct($mb_detect_order = null, $message_limit = null) { // ... }
After:
public function __construct(int $maxDepth = 3, ?string $mbDetectOrder = null, int $messageLimit = Client::MESSAGE_MAX_LENGTH_LIMIT) { // ... }
-
The
Raven_ReprSerializer
class has been renamed toRepresentationSerializer
and its constructor changed signature.Before:
public function __construct($mb_detect_order = null, $message_limit = null) { // ... }
After:
public function __construct(int $maxDepth = 3, ?string $mbDetectOrder = null, int $messageLimit = Client::MESSAGE_MAX_LENGTH_LIMIT) { // ... }