alexmanno / sentry-module

This module allows integration of Sentry Client into zend-framework 2/3 and zend-expressive

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ZF Sentry Module

Build Status Code Coverage Scrutinizer Code Quality

This module allows integration with Sentry Client into zend-framework 2/3 and zend-expressive.

Installation

The only supported way to install this module is trough composer. For composer documentation you can refer to getcomposer.org.

php composer.phar require facile-it/sentry-module

Configuration

Client

To configure an instance of the client you can do as below:

return [
    'sentry' => [
        'options' => [
            'dsn' => '',
            // other sentry options
            // https://docs.sentry.io/error-reporting/configuration/?platform=php
        ],
        'javascript' => [
            'inject_script' => false,
            'script' => [
                'src' => 'https://browser.sentry-cdn.com/5.6.3/bundle.min.js',
                'integrity' => 'sha384-/Cqa/8kaWn7emdqIBLk3AkFMAHBk0LObErtMhO+hr52CntkaurEnihPmqYj3uJho',
                'crossorigin' => 'anonymous',
            ],
            'options' => [
                'dsn' => '',
                // other sentry options
                // https://docs.sentry.io/error-reporting/configuration/?platform=php
            ],
        ],
    ],
];
//...

Now you can use the client and the Hub by retrieving it from the Service Locator.

use Sentry\HubInterface;

$hub = $this->getServiceLocator()->get(HubInterface::class);

Error Handler Listener

This module provides a listener for MvcEvent::EVENT_DISPATCH_ERROR and MvcEvent::EVENT_RENDER_ERROR events in order to log the exceptions caught in these events.

If you want to use it you should register it in your application module.

Example:

<?php

namespace App;

use Facile\SentryModule\Listener\ErrorHandlerListener;
use Zend\Mvc\MvcEvent;

class Module 
{
    public function onBootstrap(MvcEvent $e): void
    {
        $application = $e->getApplication();
        $container = $application->getServiceManager();
        $eventManager = $application->getEventManager();
        
        /** @var ErrorHandlerListener $errorHandlerListener */
        $errorHandlerListener = $container->get(ErrorHandlerListener::class);
        $errorHandlerListener->attach($eventManager);
    }
}

Log Writer

You can use our log writer to write logs.

Example:

<?php

// global.php
return [
    'log' => [
        'application.log' => [
            'writers' => [
                [
                    'name' => \Facile\SentryModule\Log\Writer\Sentry::class,
                    'options' => [
                        'filters' => [
                            [
                                'name' => 'priority',
                                'options' => [
                                    'priority' => \Zend\Log\Logger::ERR,
                                ],
                            ],
                        ],
                    ],
                ],
            ]
        ],
    ],
];

Usage:

$logger->crit('Log this message');

// or with exceptions, to see the correct trace in sentry:
$e = new \RuntimeException('test-exception');
$logger->crit($e->getMessage(), ['exception' => $e]);

Javascript

This module can inject the javascript Raven client library and configure it for you.

<?php

// facile-sentry.module.local.php
return [
    'sentry' => [
        'javascript' => [
            'inject_script' => true, // enable it
            'options' => [
                'dsn' => '',
                // other sentry options
                // https://docs.sentry.io/error-reporting/configuration/?platform=php
            ],
            // script options (defaults)
            'script' => [
                'src' => 'https://browser.sentry-cdn.com/5.6.3/bundle.min.js',
                'integrity' => 'sha384-/Cqa/8kaWn7emdqIBLk3AkFMAHBk0LObErtMhO+hr52CntkaurEnihPmqYj3uJho',
                'crossorigin' => 'anonymous',
            ],
        ],
    ],
];

In your layout:

<?= $this->headScript() ?>

Usage with zend-expressive

If you want to use with zend-expressive you should initialize the Sentry client and Hub. You can simply retrieve the HubInterface service to initialize it.

use Sentry\HubInterface;

$container->get(HubInterface::class);

About

This module allows integration of Sentry Client into zend-framework 2/3 and zend-expressive

License:MIT License


Languages

Language:PHP 100.0%