Symfony errors Catcher for Hawk.so.
-
Register an account, create a Project and get an Integration Token.
-
Install SDK via composer to install the Catcher
Catcher provides support for PHP 7.2 or later
$ composer require codex-team/hawk.symfonyAdd the following authorization information to your .env file:
HAWK_TOKEN=<your_token_from_the_control_panel>Create a configuration file at config/packages/hawk.yaml with the following content:
hawk:
integration_token: '%env(HAWK_TOKEN)%'
# Optional: Configure a custom beforeSend service
before_send_service: 'App\Hawk\BeforeSendService'In the config/packages/monolog.yaml file, specify the handler settings under the appropriate section (dev or prod):
hawk:
type: service
id: HawkBundle\Monolog\Handler
level: error$this->catcher->setUser([
'name' => 'user name',
'photo' => 'user photo',
]);
$this->catcher->setContext([
// Additional context information
]);To manually send exceptions, initialize __construct(\HawkBundle\Catcher $catcher) class via dependency injection (DI), and use the following method:
$this->catcher->sendException($exception);You can also send custom messages using the ->sendMessage(...) method:
$this->catcher->sendMessage(
'your message',
[
// Additional context information
]
);private $catcher;
public function __construct(\HawkBundle\Catcher $catcher)
{
$this->catcher = $catcher;
}
public function test()
{
try {
// The code where you need to catch the error
} catch (\Exception $exception) {
$this->catcher->sendException($exception);
}
}If you want to process or modify error data before sending it to Hawk, you can define a custom service by implementing the BeforeSendServiceInterface.
<?php
namespace App\Hawk;
use Hawk\EventPayload;
use HawkBundle\Service\BeforeSendServiceInterface;
class BeforeSendService implements BeforeSendServiceInterface
{
public function __invoke(EventPayload $eventPayload): ?EventPayload
{
$user = $eventPayload->getUser();
// Modify or add additional data to the error report
if (!empty($user['email'])){
unset($user['email']);
$eventPayload->setUser($user);
}
// Return null to prevent the event from being sent to Hawk
if ($eventPayload->getContext()['skip_sending'] ?? false) {
return null;
}
return $eventPayload;
}
}Feel free to ask questions or improve the project.
Repository: https://github.com/codex-team/hawk.symfony
Report a bug: https://github.com/codex-team/hawk.symfony/issues
Composer Package: https://packagist.org/packages/codex-team/hawk.symfony
CodeX Team: https://codex.so
MIT