Laravel
monolog
Slack

[Laravel]Monologを使ってSlackに通知できたらええやん?したいやん?

More than 1 year has passed since last update.


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

現在運用しているサービスの通知を全て Slack で受け取りたい

ここから全ては始まった。\(^o^)/ハジマタ


LaravelではMonologを使っている

現在のサービスではフレームワークにLaravelを使用しています。

ログはMonologを使っている。

よくよく調べてみると、、、おっ簡単に出来そうやん!!


よっしゃ、いっっちょやってみっか!

ということでやってみるで。


Monologのドキュメントを眺める

ふむふむ φ(゚Д゚ )フムフム…

Monolog-Github

あった!

Handlers, Formatters and Processors

コレの中の

SlackHandler

これやん!


SlackHandler使ってみるで


まずはSlackの設定を作るやで

Laravelのconfigに設定を作るやで

config/slack.php みたいな感じ。

<?php

/**
* Slack出力設定を行います。
*/

return [

'slack' => [
'token'                                             => [slack APIのトークン],
'channel'                                         => [slack通知したいチャンネル名 etc],
'name'                                               => '通知した時の通知者名',
'use_attachment_message'            => true,
'icon_emoji'                                   => [通知した時のアイコン],
'over_notification_log_level' => [どのエラーレベル以上でslack通知するか](\Monolog\Logger::ERROR とか),
'use_bubble'                                   => true,
'use_short_attachment'              => true,
'use_context_and_extra'            => true,
],

];


MonologにSlackHandlerを追加するやで

// slackのconfigを取得

$slackConfig = \Config::get('slack.slack');

\Log::getMonolog()->pushHandler(
new \Monolog\Handler\SlackHandler(
$slackConfig['token'],
$slackConfig['channel'],
$slackConfig['name'],
$slackConfig['use_attachment_message'],
$slackConfig['icon_emoji'],
$slackConfig['over_notification_log_level'],
$slackConfig['use_bubble'],
$slackConfig['use_short_attachment'],
$slackConfig['use_context_and_extra']
)
);


あとはログするだけやで!

over_notification_log_level\Monolog\Logger::ERROR を設定した場合

// これはSlackへ通知される

\Log::error('Slackへ届けこのログ!!');

// これはSlackへ通知されない
\Log::warning('Slackへ届けこのログ!!');

こんな感じで通知されるやで

スクリーンショット 2016-07-22 12.58.35.png

とっても簡単にできました。

Monologの設定以上にSlackのAPIトークン取得のが時間かかったかもしれません。

拙い文章失礼しましたー。