今、携わっているプロジェクトで謎のエラーでアプリケーションが
落ちる事があり、エラーログを検知して、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
クリックする / 入力する
- Create New App
- App Name
- Development Slack Team
- Create App
###2. スコープ設定
まずはスコープの設定をしないとアプリをインストールできません。
今回のサンプルではチャンネルにメッセージを投稿するだけのスコープだけ設定します。
どのスコープでどういうことができるかは今回取り扱いませんので、ドキュメントを参照ください。
- 必要なscopeを選択
- 今回はSend messages as sample.
###3. Slackにアプリをインストール
ちゃんとScopeが設定されていると緑色になっている[Install App To Team]を押します。
Team名を確認して間違いがなければ[Authorize]を押します。
リダイレクトされた先にTokenが書かれていますのでこれを普通のTokenとして使ってください。
###4. Tokenを探す
先のTokenを紛失したときの探し方。
https://api.slack.com/apps
[OAuth & Permissions]をクリック
[OAuth Access Token]をコピー
##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');
##参考
https://qiita.com/qiita-kurara/items/04a3de448506e1d7876c