Sentry is an error and exception aggregation service. It takes your application's errors, aggregates them alongside configurable context and stores them for later analysis and debugging.
Imagine this: You see errors and exceptions before your clients do. The error > report > debug > patch > deploy cycle is therefore the most efficient it can possibly be.
This module binds Sentry.io and hosted Sentry installations, to the Monlog error logger in SilverStripe. If you've used systems like RayGun, Rollbar, AirBrake and BugSnag before, you'll know roughly what to expect.
See composer.json
.
composer require phptek/sentry
- Version 5.x is aimed at Silverstripe 5.
- Versions 2.x, 3.x and 4.x should work with the same Silverstripe v4 setups. v3+ simply use newer versions of the Sentry PHP SDK and have additional bugfixes and features.
- Version 3.x
SentryClientAdaptor
has been renamed toSentryAdaptor
andSentryLogWriter
was renamed toSentryLogger
, so your existing configuration(s) may need to be updated accordingly.
You can set your DSN as a first-class environment variable or via your project's .env
file:
SENTRY_DSN="http://deacdf9dfedb24ccdce1b90017b39dca:[email protected]/44"
Or you can set it in YML config, where you gain a little more flexibility and control:
The following will get you errors reported in all environment modes: dev
, test
and live
:
---
Name: my-project-config-sentry
After:
- 'sentry-config'
---
PhpTek\Sentry\Adaptor\SentryAdaptor:
opts:
# Example DSN only. Obviously you'll need to setup your own Sentry "Project"
dsn: http://deacdf9dfedb24ccdce1b90017b39dca:[email protected]/44
The following will get you errors reported just in test
and live
but not dev
:
---
Name: my-project-config-sentry
After:
- 'sentry-config'
---
---
Only:
environment: test
---
PhpTek\Sentry\Adaptor\SentryAdaptor:
opts:
# Example DSN only. Obviously you'll need to setup your own Sentry "Project"
dsn: http://deacdf9dfedb24ccdce1b90017b39dca:[email protected]/44
---
Except:
environment: test
---
PhpTek\Sentry\Adaptor\SentryAdaptor:
opts:
# Example DSN only. Obviously you'll need to setup your own Sentry "Project"
dsn: http://deacdf9dfedb24ccdce1b90017b39dca:[email protected]/44
---
Only:
environment: dev
---
PhpTek\Sentry\Adaptor\SentryAdaptor:
opts:
dsn: null
---
Please review the usage docs for further configuration and customisation options.
Notes:
- You can silence errors from
Injector
where "test" and "live" envs havehttp_proxy
set, but "dev" environments don't. Just setnull
as the value. This applies to all YML config where some envs have a setting and others don't. For example:
...
---
Only:
environment: dev
---
PhpTek\Sentry\Adaptor\SentryAdaptor:
opts:
dsn: null
http_proxy: null
---
...
-
As per the examples above, ensure your project's Sentry config is set to come after the module's own config, thus:
After: - 'sentry-config'
YML Config:
phptek\Sentry\Adaptor\SentryClientAdaptor:
opts:
# Example DSN only. Obviously you'll need to setup your own Sentry "Project"
dsn: http://deacdf9dfedb24ccdce1b90017b39dca:[email protected]/44
mysite/_config.php:
SS_Log::add_writer(\phptek\Sentry\SentryLogWriter::factory(), SS_Log::ERR, '<=');
Sentry is normally setup once in your project's YML config or _config.php
file. See the above examples and the usage docs for details and options.
If you like what you see, support me! I accept Bitcoin:
3KxmqFeVWoigjvXZoLGnoNzvEwnDq3dZ8Q |