LoginSignup
6
14

More than 5 years have passed since last update.

LaravelでMonologを使って、SlackにERROR通知する

Last updated at Posted at 2017-12-18

今、携わっているプロジェクトで謎のエラーでアプリケーションが
落ちる事があり、エラーログを検知して、Slackに通知する事になった!

やりたいこと

  • Monologを使ってSlackへ通知したい

環境

  • Laravel5.4
  • php7.1
  • local開発環境(MAMP)

手順

1.Slackでアプリを発行する
2.monologをインストール
3.monologの設定を行う
4.動作確認

1.Slackでアプリを発行する

1.1まずはここにアクセスして、 https://api.slack.com/apps

クリックする / 入力する
1. Create New App
2. App Name
3. Development Slack Team
4. Create App

スクリーンショット 2017-12-10 5.43.01.png

2. スコープ設定

まずはスコープの設定をしないとアプリをインストールできません。
今回のサンプルではチャンネルにメッセージを投稿するだけのスコープだけ設定します。
どのスコープでどういうことができるかは今回取り扱いませんので、ドキュメントを参照ください。

permission scopeをクリック
キャプチャ.png
* 必要なscopeを選択
* 今回はSend messages as sample.

キャプチャ2.png

3. Slackにアプリをインストール

ちゃんとScopeが設定されていると緑色になっている[Install App To Team]を押します。

キャプチャ3.png
Team名を確認して間違いがなければ[Authorize]を押します。
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3131323932392f31663834313432382d633465342d356137392d386235622d3532363461346564303439372e706e67.png

リダイレクトされた先にTokenが書かれていますのでこれを普通のTokenとして使ってください。

4. Tokenを探す

先のTokenを紛失したときの探し方。
https://api.slack.com/apps

アプリを選ぶ。
sampleをクリック
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3131323932392f34383237333635302d333236632d373934662d356363372d3531323265373336353333332e706e67.png

[OAuth & Permissions]をクリック
[OAuth Access Token]をコピー

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3131323932392f36376161353038332d636266382d376665382d663431372d6263343865383530616433342e706e67.png

2.monologをインストール

下記のコマンドを実行して、monologをインストール

$ composer require monolog/monolog

3.monologの設定を行う

AppServiceProvider.php に先ほど発行したtokenの設定などを行う。

<?php

namespace App\Providers;

use Illuminate\Support\Facades\Schema;
use Illuminate\Support\ServiceProvider;
use Log;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {

        Log::listen(function () {

            $monolog = \Log::getMonolog();

            $slackHandler = new \Monolog\Handler\SlackHandler(
                'token',
                '#channel-name',
                'Monolog',
                true,
                null,
                \Monolog\Logger::ERROR
            );

            $monolog->pushHandler($slackHandler);
        });
    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

4.動作確認

\Monolog\Logger::ERROR を設定した場合
Slackに指定したメッセージが表示されていれば成功!!

// 意図的にSlackへ通知する
\Log::error('TEST');

スクリーンショット 2017-12-10 6.04.19.png

参考

6
14
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
14