Создайте файл конфигурации config/packages/hawk.yaml со следующим содержимым:
hawk:
integration_token: '%env(HAWK_TOKEN)%'
# Необязательно: сервис для обработки события перед отправкой
before_send_service: 'App\Hawk\BeforeSendService'
В файле config/packages/monolog.yaml укажите настройки handler в нужной секции, например devили prod:
hawk:
type: service
id: HawkBundle\Monolog\Handler
level: error
private $catcher;
public function __construct(\HawkBundle\Catcher $catcher)
{
$this->catcher = $catcher;
}
public function test()
{
try {
// Код, в котором нужно перехватить ошибку
} catch (\Exception $exception) {
$this->catcher->sendException($exception);
}
}
Если вы хотите обработать или изменить данные ошибки перед отправкой в Hawk, можно определить собственный сервис, реализующий 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();
// Изменение или добавление данных в событие
if (!empty($user['email'])) {
unset($user['email']);
$eventPayload->setUser($user);
}
// Верните null, чтобы не отправлять событие в Hawk
if ($eventPayload->getContext()['skip_sending'] ?? false) {
return null;
}
return $eventPayload;
}
}