networkteam / sentry-client
A Sentry client for TYPO3. It forwards errors and exceptions to Sentry - https://sentry.io/
Installs: 326 379
Dependents: 0
Suggesters: 0
Security: 0
Stars: 26
Watchers: 9
Forks: 30
Open Issues: 9
Type:typo3-cms-extension
Requires
- sentry/sdk: ^3.1.0
- typo3/cms-backend: ^10.4.11 || ^11.0 || ^12.0
- typo3/cms-core: ^10.4.11 || ^11.0 || ^12.0
- typo3/cms-frontend: ^10.4.11 || ^11.0 || ^12.0
Requires (Dev)
Replaces
- typo3-ter/sentry-client: 4.3.0
README
TYPO3 logs error messages and exceptions to logfiles and the backend log module. This extension sends them to Sentry, a SaaS/self-hosted application which aggregates them and informs you by mail. In Sentry you see a enriched error messages with stacktrace, HTTP headers and submitted request/form data.
Technical decisions
Exceptions through database outages (imagine a mysql server restart) should not be reported, so the db connection is checked before. Exceptions may be excluded via regexp on their message (won't fix this error => exclude it). TYPO3 throws a lot of PHP Notices and they are not really interesting in production, they are excluded by default.
Installation
The preferred way is with Composer:
$ composer require networkteam/sentry-client
The TER version includes some composer dependencies locally, which may lead to problems in the future (one package with multiple version in the project).
Configuration
// Extension Configuration $GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['sentry_client']['dsn'] = 'http://public_key@your-sentry-server.com/project-id'; // LocalConfiguration.php (New since 3.0!!!) $GLOBALS['TYPO3_CONF_VARS']['SYS']['productionExceptionHandler'] = 'Networkteam\SentryClient\ProductionExceptionHandler';
Environment variables
Since Sentry SDK 2.x there are environment variables which can be used, for example in a .htaccess file:
SetEnv SENTRY_DSN http://public_key@your-sentry-server.com/project-id
SetEnv SENTRY_RELEASE 1.0.7
SetEnv SENTRY_ENVIRONMENT Staging
LogWriter
The extension comes with a LogWriter which forwards messages to Sentry which normally are just logged. You can enable it in EM or configure it for specific components:
$GLOBALS['TYPO3_CONF_VARS']['LOG']['YourVendor]['YourExtension]['Controller']['writerConfiguration'] = [ \TYPO3\CMS\Core\Log\LogLevel::ERROR => [ \Networkteam\SentryClient\SentryLogWriter::class => [], ] ];
Feature Toggles
- Ignore database connection errors (they should better be handled by a monitoring system)
- Report user information: Select one of
none
|userid
|usernameandemail
- Blacklist exception message regular expression
- LogWriter Loglevel: If set, log messages are reported to Sentry
- LogWriter Component blacklist
Request ID
If the web server has set a request ID header X-Request-Id
, this is transmitted as a tag to trace errors to logs.
How to test if the extension works?
page = PAGE page.20 = USER page.20 { userFunc = Networkteam\SentryClient\Client->captureException }
This triggers an error that will be reported.
Issue tracker
This extension is managed on GitHub. Feel free to get in touch at https://github.com/networkteam/sentry_client
Help
There is a Slack channel #ext-sentry_client
Changelog
4.2.0
- Add log message interpolation (Thanks to @sascha-egerer)
- Add Fingerprint to log messages
- Deprecated: Usage of DebugExceptionHandler
4.1.0
- Client IP is anonymized with
IpAnonymizationUtility::anonymizeIp()
. Thanks to @extcode - Add
X-Request-Id
as tag. Thanks to @bergo - Small code optimizations. Thanks to @tlueder and @LeoniePhiline
4.0.0
- Add stacktrace to LogWriter messages for message grouping in Sentry
- Add LogWriter component blacklist
- Add v11.5 support
- Drop v9.5 support
3.0..3.1
- Add experimental LogWriter
- Remove setting activatePageNotFoundHandling
- Ignore PageNotFoundException by default
- Support TYPO3 proxy setting
- Use sentry/sdk:3.1
2.0..3.0
- Use sentry/sdk:2.0
- Remove setting productionOnly
- Remove setting reportWithDevIP
- Rename setting activatePageNotFoundHandlingActive to activatePageNotFoundHandling
- Report E_ALL ^ E_NOTICE
- Strip project root
- Show event id in FE