This Magento 2 module integrates the Sentry sdk into magento 2. Depending on the log level configured in the backend of magento 2, notifications and errors can be send to sentry.
composer require justbetter/magento2-sentry
bin/magento module:enable JustBetter_Sentry
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento setup:static-content:deploy
For configuration with Adobe Cloud, check below.
This module uses the Magento Deployment Configuration for most it's configuration. This means that you need to add this array to your app/etc/env.php
:
'sentry' => [
'dsn' => 'example.com',
'logrocket_key' => 'example/example',
'environment' => null,
'log_level' => \Monolog\Logger::WARNING,
'errorexception_reporting' => E_ALL,
'ignore_exceptions' => [],
'mage_mode_development' => false,
'js_sdk_version' => \JustBetter\Sentry\Block\SentryScript::CURRENT_VERSION,
'tracing_enabled' => true,
'tracing_sample_rate' => 0.5,
'performance_tracking_enabled' => true,
'performance_tracking_excluded_areas' => ['adminhtml', 'crontab'],
'profiles_sample_rate' => 0.5,
'ignore_js_errors' => [],
'disable_default_integrations' => [
\Sentry\Integration\ModulesIntegration::class,
]
]
Next to that there are some configuration options under Stores > Configuration > JustBetter > Sentry.
dsn
: Please enter here the DSN you got from Sentry for your project. You can find the DSN in the project settings under "Client Key (DSN)"environment
: Here you can specify the environment under which the deployed version is running. Common used environments are production, staging, and development. With this option you can differentiate between errors which happen on the staging and i.e. on the production systemlog_level
: With this configuration you can specify from which logging level on Sentry should get the messageserrorexception_reporting
: If the Exception being thrown is an instance of ErrorException send the error to sentry if it matches the error reporting. This uses the same syntax as Error Reporting eg.E_ERROR | E_WARNING
to only log Errors and Warnings.ignore_exceptions
: If the class being thrown matches any in this list do not send it to Sentry e.g.[\Magento\Framework\Exception\NoSuchEntityException::class]
mage_mode_development
: If this option is set to true you will receive issues in Sentry even if you're Magento is running in develop mode.js_sdk_version
: if this option is set, it will load the explicit version of the javascript SDK of Sentry.tracing_enabled
if this option is set to true, tracing got enabled (bundle file got loaded automatically). Default:false
tracing_sample_rate
if tracing is enabled, you should also set the sample rate. Default:0.2
performance_tracking_enabled
if performance tracking is enabled, a performance report got generated for the request. Default:false
performance_tracking_excluded_areas
: ifperformance_tracking_enabled
is enabled, we recommend to exclude theadminhtml
&crontab
area. Default['adminhtml', 'crontab']
profiles_sample_rate
if this option is larger than 0 (zero), the module will create a profile of the request. Please note that you have to install Excimer on your server to use profiling. Sentry documentation. You have to enable tracing too. Default0
(disabled)ignore_js_errors
array of javascript error messages, which should be not send to Sentry. (see alsoignoreErrors
in Sentry documentation)disable_default_integrations
provide a list of FQCN of default integrations, which you do not want to use. List of default integrations. Default:[]
Since Adobe Cloud doesn't allow you to add manually add content to the env.php
file, the configuration can be done
using the "Variables" in Adobe Commerce using the following variables:
CONFIG__SENTRY__ENVIRONMENT__ENABLED
: booleanCONFIG__SENTRY__ENVIRONMENT__DSN
: stringCONFIG__SENTRY__ENVIRONMENT__LOGROCKET_KEY
: stringCONFIG__SENTRY__ENVIRONMENT__ENVIRONMENT
: stringCONFIG__SENTRY__ENVIRONMENT__LOG_LEVEL
: integerCONFIG__SENTRY__ENVIRONMENT__ERROREXCEPTION_REPORTING
: integerCONFIG__SENTRY__ENVIRONMENT__IGNORE_EXCEPTIONS
: A JSON encoded array of classesCONFIG__SENTRY__ENVIRONMENT__MAGE_MODE_DEVELOPMENT
: stringCONFIG__SENTRY__ENVIRONMENT__JS_SDK_VERSION
: stringCONFIG__SENTRY__ENVIRONMENT__TRACING_ENABLED
: booleanCONFIG__SENTRY__ENVIRONMENT__TRACING_SAMPLE_RATE
: floatCONFIG__SENTRY__ENVIRONMENT__TRACING_PERFORMANCE_TRACKING_ENABLED
: booleanCONFIG__SENTRY__ENVIRONMENT__TRACING_PERFORMANCE_TRACKING_EXCLUDED_AREAS
: booleanCONFIG__SENTRY__ENVIRONMENT__IGNORE_JS_ERRORS
: A JSON encoded array of error messages
The following configuration settings can be overridden in the Magento admin. This is limited to ensure that changes to particular config settings can only be done on server level and can't be broken by changes in the admin.
Please note, that it is not possible to use profiling within the Adobe Cloud.
- Optional you can configure custom error pages in pub/errors. You can use the sentry feedback form and insert here the sentry log ID. The Sentry Log Id is captured in de customer session and can be retrieved in
processor.php
.
- When calling any function from the Psr\Log\LoggerInterface you can pass any data to the parameter $context and it will be send to Sentry as 'Custom context'.
This module has an event called sentry_before_send
that is dispatched before setting the config before_send. This provides the means to edit / filter events. You could for example add extra criteria to determine if the exception should be captured to Sentry. To prevent the Exception from being captured you can set the event to null
or unset it completly.
public function execute(\Magento\Framework\Event\Observer $observer)
{
$observer->getEvent()->getSentryEvent()->unsEvent();
}
Example: https://github.com/justbetter/magento2-sentry-filter-events
The module is tested on Magento version 2.4.x with sentry sdk version 3.x. Magento 2.1.x is not supported by us anymore, feel free to fork this project or make a pull request.
Please create a issue or a pull request.
We’re a innovative development agency from The Netherlands building awesome websites, webshops and web applications with Laravel and Magento. Check out our website justbetter.nl and our open source projects.