PHPでSlackに例外を通知するときに便利なariarijp/exception-to-slack-attachmentsを作った

github.com

ほとんど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();
}

例外は以下のような感じで通知されます。

f:id:ariarijp:20160415105652p:plain