Laravel

LaravelでSlackにエラーログを出力する

いつもご利用ありがとうございます。このブログは、広告費によって運営されています。

オススメ本
Web技術を勉強するなら、かなりオススメの雑誌です。毎月新しい発見があります。ついに最終号・・・、みなさん買いましょう!!
読んで損することはない名著。命名で悩むことが多い人はこの本がオススメです。

⇨ Laravel 記事の目次はこちら

Laravel のエラーログを Slack に飛ばす方法をやっていきます。

ログを Slack に吐き出すように設定すると、スマホに Slack アプリを入れるだけで簡単にエラーが発生した時に通知がくるのでおすすめです。

基本的に無料なので、個人開発でも使えますし、少人数のベンチャー企業のサービスでも使われていると思います。

環境

MacOS

Laravel6

Slack のワークスペースを持っている状態

SlackAPI の Webhook を取得する

まず、SlackAPI のページに入ります。

=>SlackAPI のページ

ここから、ログインしてください。

ワークスペースがない場合は、ワークスペースを作成してください。

1 ログインしたら、右上の「YourApps」を押します。

2 次のページで「Create New App」を押します。

3App Name の入力と、ワークスペースを選択します。

App Name は任意の名前をつけれます。日本語でも書けるので、わかりやすくて自分が管理しやすい名前をつけましょう。

4 下の画像の場所に、Incomming Webhooks という項目があるのでそこをクリックしてください。

スラックAPIの管理画面の画像

そこに、Activate Incoming Webhooks が OFF で初期状態にあるので、これを ON にします。

すると、色々表示されました。

スラックAPIの管理画面の画像2

5 この Add New Webhook To Workspace をクリックします。

エラーが出てしまいました・・・。

「(さきほど設定した AppName)にはインストールするボットユーザーがありません。」と出ました。

スラックAPIの管理画面の画像3

これは、Slack の機能をインストールするための Bot がワークスペースにいないために起こるエラーのようです。

たまーーーにしか触らないのでここら辺は覚えてなかったです。

6 左のメニューの Features/AppHome「Your App’s Presence in Slack」の項目を設定する

スラックのワークスペースに Bot が入りました。

そしたら、再び戻って、さきほどの IncomingWebhooks⇨Add New Webhook To Workspace をクリックします。

そこに投稿するチャンネルを指定します。

今回は、プライベートで「エラーログ」というチャンネルを Slack のワークスペースに作って、それを指定しています。

指定が終わると、WebhookURL というのが発行され、それを使うとそのチャンネルにログを飛ばすことができます。

Laravel で実装する

Laravel ではエラーログは、config/logging.php に設定が書かれています。

このファイルで、開発環境でのエラーログであったり本番環境でのエラーログであったり、というのを指定することが可能になっています。

今回は、開発環境でエラーログを Slack に出すようにしていきます。

まず、さきほど SlackAPI の管理画面場で用意した WebhookURL を.env ファイルに書きます。

.env ファイルには、7行目に LOG_CHANNEL という項目があるはずなので、それを変更しつつ、その付近に追記します。

# .env
LOG_CHANNEL=slack
LOG_SLACK_WEBHOOK_URL=ここにさきほどのWebhookURLをコピペ。シングルクオーテーションはいらないです。

env ファイルを編集したら

php artisan config:clear

コマンドを打ちます。

そしたら、config/logging.php を編集します。

channels の slack の項目を debug に変更します。

        'slack' => [
            'driver' => 'slack',
            'url' => env('LOG_SLACK_WEBHOOK_URL'),
            'username' => 'Laravel Log',
            'emoji' => ':boom:',
            'level' => 'debug',//ここをdebugにする
        ],

以上です!

エラーを出してみましょう。

はい!エラーが飛んできました!

スラックAPIの管理画面の画像4

Laravel の設定は超簡単でした。

エラーログの設定をカスタマイズする

さきほどの過程で、エラーログが出力されやすいように、もっともログが出力されやすい lavel を debug に設定しましたが、これだとめちゃくちゃエラーログが届くようになってしまいます。

なので、どんなときにエラーログを出力するかーというのを設定することができます。

レベルは8段階あって左にいけばいくほど致命的なエラーとなります。

emergency、alert、critical、error、warning、notice、info、debug

色々試してみてください。初期設定は critical になっていますが、サービスの初期段階だと、結構情報が多い方が助かるので warning とか、error が良いと思います(具体的にどんなエラーが来るとか差は分からないですが、肌感では error でちょうど良いです)

以上となります!

開発中に Slack にエラーログが飛んでくるのは結構邪魔くさいので、.env の

LOG_CHANNEL=stack

に戻しましょう。

まとめ

いかがだったでしょうか?

今回は、Slack にエラーログを出力する方法について書きました。

エラーログを出力させる場所や通知させる手段は色々ありますが、一番簡単なのとスマホで簡単に見れると言うことで Slack をエラーログに出力するのは個人開発レベルでは割と重宝すると思います。

今回の Webhook の取得の方法を使って、さらに任意のタイミングで Slack にチャットを送信することも可能なので、興味があれば調べてみてください。

記事の内容についての苦情やミスの指摘は、Twitter の DM にお願いします。

最後に初心者におすすめの本の紹介です。

良く読まれている記事「Laravel6 Auth のメールアドレスの認証を実装してみる(VerifyEmail)」