Monologを使ってSlackへ通知したい
現在運用しているサービスの通知を全て Slack
で受け取りたい
ここから全ては始まった。\(^o^)/ハジマタ
LaravelではMonologを使っている
現在のサービスではフレームワークにLaravel
を使用しています。
ログはMonolog
を使っている。
よくよく調べてみると、、、おっ簡単に出来そうやん!!
よっしゃ、いっっちょやってみっか!
ということでやってみるで。
Monologのドキュメントを眺める
ふむふむ φ(゚Д゚ )フムフム…
あった!
Handlers, Formatters and Processors
コレの中の
これやん!
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へ届けこのログ!!');
こんな感じで通知されるやで
とっても簡単にできました。
Monologの設定以上にSlackのAPIトークン取得のが時間かかったかもしれません。
拙い文章失礼しましたー。