Awesome
Sentry.io integration for SilverStripe
Sentry and Glitchtip are error and exception aggregation services. Systems like these take your application's errors, aggregate them alongside configurable context and store them for triage and analysis.
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, app.glitchtip.com and on-prem hosted Sentry/Glitchtip 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.
Requirements
See composer.json
Setup:
composer require phptek/sentry
Notes:
- 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.
Config
You can set your DSN as a first-class environment variable in .env
or your CI config:
SENTRY_DSN="http://deacdf9dfedb24ccdce1b90017b39dca:deacdf9dfedb24ccdce1b90017b39dca@sentry.mydomain.nz/44"
You can also set it in your project's YML config:
---
Name: my-project-config-sentry
After:
- 'sentry-config'
---
# Send errors reported for all environment modes: `dev`, `test` and `live` envs
PhpTek\Sentry\Adaptor\SentryAdaptor:
opts:
# Example DSN only. Obviously you'll need to setup your own Sentry "Project"
dsn: http://deacdf9dfedb24ccdce1b90017b39dca:deacdf9dfedb24ccdce1b90017b39dca@sentry.mydomain.nz/44
Conditional Config
---
Name: my-project-config-sentry
After:
- 'sentry-config'
---
# Send errors reported just in `test` and `live`, but not `dev` envs
---
Only:
environment: test
---
PhpTek\Sentry\Adaptor\SentryAdaptor:
opts:
# Example DSN only. Obviously you'll need to setup your own Sentry "Project"
dsn: http://deacdf9dfedb24ccdce1b90017b39dca:deacdf9dfedb24ccdce1b90017b39dca@sentry.mydomain.nz/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:deacdf9dfedb24ccdce1b90017b39dca@sentry.mydomain.nz/44
---
Only:
environment: dev
---
PhpTek\Sentry\Adaptor\SentryAdaptor:
opts:
dsn: null
---
Please review the usage docs for further configuration and customisation options.
Notes:
- Silence
Injector
errors wheretest
andlive
envs havehttp_proxy
set butdev
environments don't: Provide a value ofnull
, which applies to all YML config where one env has a setting and another doesn'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 config is set to come after the module's own config, thus:
After: - 'sentry-config'
SilverStripe Framework v3
YML Config:
phptek\Sentry\Adaptor\SentryClientAdaptor:
opts:
# Example DSN only. Obviously you'll need to setup your own Sentry "Project"
dsn: http://deacdf9dfedb24ccdce1b90017b39dca:deacdf9dfedb24ccdce1b90017b39dca@sentry.mydomain.nz/44
mysite/_config.php:
SS_Log::add_writer(\phptek\Sentry\SentryLogWriter::factory(), SS_Log::ERR, '<=');
Usage
Sentry is normally setup once in your project's .env
, YML config or even _config.php
file. See the above examples and the usage docs for details and options.
Support Me
If you like what you see, support me! I accept Bitcoin:
<table border="0"> <tr> <td rowspan="2"> <img src="https://bitcoin.org/img/icons/logo_ios.png" alt="Bitcoin" width="64" height="64" /> </td> </tr> <tr> <td> <b>3KxmqFeVWoigjvXZoLGnoNzvEwnDq3dZ8Q</b> </td> </tr> </table> <p> </p> <p> </p>