PHP 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.php\Hawk\Catcher::init([
'integrationToken' => 'your integration token'
]);The default transport requires the ext-curl PHP extension.
If ext-curl is unavailable, provide a custom transport via the transport option.
You can also provide your own transport by implementing TransportInterface.
Custom transports own their endpoint and timeout configuration, so the url and timeout options are used only by the default transport.
For example, install a PHP-version-compatible Guzzle release in your application and wrap it with a custom transport:
use Hawk\Event;
use Hawk\Options;
use Hawk\Transport\TransportInterface;
class CustomGuzzleTransport implements TransportInterface
{
private $url;
private $client;
public function __construct(string $url = Options::DEFAULT_URL)
{
$this->url = $url;
$this->client = new \GuzzleHttp\Client();
}
public function getUrl(): string
{
return $this->url;
}
public function send(Event $event)
{
$this->client->request('POST', $this->url, [
'headers' => [
'Content-Type' => 'application/json',
],
'body' => json_encode($event, JSON_UNESCAPED_UNICODE),
]);
}
}
\Hawk\Catcher::init([
'integrationToken' => 'your integration token',
'transport' => new CustomGuzzleTransport(),
]);After initialization you can set user or context for any event that will be send to Hawk
\Hawk\Catcher::get()
->setUser([
'name' => 'user name',
'photo' => 'user photo',
])
->setContext([
...
]);Use sendException method to send any caught exception
try {
throw new Exception("Error Processing Request", 1);
} catch (Exception $e) {
\Hawk\Catcher::get()->sendException($e);
}Use sendEvent method to send any data (logs, notices or something else)
\Hawk\Catcher::get()->sendMessage('your message', [
... // Context
]);Use the beforeSend hook to filter any data you don't want to send to Hawk. Use setters to clear any property.
\Hawk\Catcher::init([
// ...
'beforeSend' => function (\Hawk\EventPayload $eventPayload) {
$user = $eventPayload->getUser();
if (!empty($user['email'])){
unset($user['email']);
$eventPayload->setUser($user);
}
return $eventPayload;
}
]);Feel free to ask questions or improve the project.
Repository: https://github.com/codex-team/hawk.php
Report a bug: https://github.com/codex-team/hawk.php/issues
Composer Package: https://packagist.org/packages/codex-team/hawk.php
CodeX Team: https://codex.so
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). See the LICENSE file for the full text.
