6
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

LaravelAdvent Calendar 2017

Day 25

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

##参考
https://qiita.com/qiita-kurara/items/04a3de448506e1d7876c

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?