LaravelでSlackにエラーログを出力する
いつもご利用ありがとうございます。
この記事には広告が掲載されており、その広告費によって運営しています。
Laravel のエラーログを Slack に飛ばす方法をやっていきます。
ログを Slack に吐き出すように設定すると、スマホに Slack アプリを入れるだけで簡単にエラーが発生した時に通知がくるのでおすすめです。
基本的に無料なので、個人開発でも使えますし、少人数のベンチャー企業のサービスでも使われていると思います。
環境
MacOS
Laravel6
Slack のワークスペースを持っている状態
SlackAPI の Webhook を取得する
まず、SlackAPI のページに入ります。
ここから、ログインしてください。
ワークスペースがない場合は、ワークスペースを作成してください。
1 ログインしたら、右上の「YourApps」を押します。
2 次のページで「Create New App」を押します。
3App Name の入力と、ワークスペースを選択します。
App Name は任意の名前をつけれます。日本語でも書けるので、わかりやすくて自分が管理しやすい名前をつけましょう。
4 下の画像の場所に、Incomming Webhooks という項目があるのでそこをクリックしてください。
そこに、Activate Incoming Webhooks が OFF で初期状態にあるので、これを ON にします。
すると、色々表示されました。
5 この Add New Webhook To Workspace をクリックします。
エラーが出てしまいました・・・。
「(さきほど設定した AppName)にはインスト ールするボットユーザーがありません。」と出ました。
これは、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にする
],
以上です!
エラーを出してみましょう。
はい!エラーが飛んできました!
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 にお願いします。
最後に初心者におすすめの本の紹介です。