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.
- PHP >=7.0
- SilverStripe ^4.0
- PHP5.4+, <7.0
- SilverStripe v3.1.0+, < 4.0
Add the Composer package as a dependency to your project:
composer require phptek/sentry
Notes:
- Versions 2.x and 3.x should work with the same setups, the latter simply uses a newer version of the Sentry PHP SDK, and has a leaner codebase.
- Version 3.x
SentryClientAdaptor
has been renamed toSentryAdaptor
, so your existing configuration(s) will have to be updated accordingly.
Configure your application or site with the Sentry DSN:
You can set your DSN as a first-class environment variable or via your project's .env
file:
SENTRY_DSN="http://deacdf9dfedb24ccdce1b90017b39dca:deacdf9dfedb24ccdce1b90017b39dca@sentry.mydomain.nz/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:deacdf9dfedb24ccdce1b90017b39dca@sentry.mydomain.nz/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: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
---
Should your app require outgoing traffic to be passed through an proxy, the following config will work:
# Proxy constants
http_proxy:
host: '`MY_OUTBOUND_PROXY`'
port: '`MY_OUTBOUND_PROXY_PORT`'
Notes:
- In 3.x 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'
You can set the minimum log-level you're interested in, using the log_level
config, the module default is to report anything more severe than a WARNING
:
PhpTek\Sentry\Handler\SentryHandler:
# One of the permitted severities: DEBUG|INFO|WARNING|ERROR|FATAL
log_level: ERROR
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
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 |