PHPでSlackに例外を通知するときに便利なariarijp/exception-to-slack-attachmentsを作った
ほとんどREADMEの内容に書いてあることだけど、ひさしぶりにブログも書いてみることにしました。
何がしたかったのか
PHPで例外を捕捉してSlackに通知する時に、SlackのMessage Attachmentsを使って見やすく通知したかったので、
PHPでSlackを連携するのによく使われるであろうmaknz/slackで使えるAttachmentsの配列を例外オブジェクトから生成するようにしました。
使い方
composer.jsonを用意してcomposer install
する。既存のcomposer.jsonに追記する場合はcomposer update
をするなどうまい具合にしてください。
"require": { "ariarijp/exception-to-slack-attachments": "dev-master" }
try-catchやフレームワークの例外ハンドラー内で例外オブジェクトを受け取ってSlackに通知する。といった使い方を想定しています。
以下はtryの中で例外を発生させ、その例外情報をSlackに通知する例です。
<?php require_once __DIR__.'/vendor/autoload.php'; use Maknz\Slack; use ExceptionToSlackAttachments\ExceptionToSlackAttachments; try { throw new \Exception('Something went wrong'); } catch (\Exception $e) { $attachments = ExceptionToSlackAttachments::toAttachments($e); $client = new Slack\Client('http://your.slack.endpoint'); $client->to('#general') ->attach($attachments) ->send(); }
例外は以下のような感じで通知されます。