やりたかったこと
LaravelでSlackに直接ログを通知するようにしてるとき。
例外が発生したときのSlack通知で。
スタックトレースは送らないようにしたい。
(Slackの通知用チャンネルがエライことになった)
実行環境
Laravel 5.7
やったこと
logging.php に設定追加すれば完了!
'slack' => [
'driver' => 'slack',
'url' => env('LOG_SLACK_WEBHOOK_URL'),
'username' => 'Laravel Log',
'emoji' => ':boom:',
'level' => 'critical',
+ 'context' => false,
],
どうなるのか
こういう通知が届くようになります。
恐ろしく長いスタックトレースで流されずにすみます。
(設定ミスったままmigrateを実行した図)
ドキュメントに載ってなかったけど、コード読んでたら見つけました。
vendor/laravel/framework/src/Illuminate/Log/LogManager.php
/**
* Create an instance of the Slack log driver.
*
* @param array $config
* @return \Psr\Log\LoggerInterface
*/
protected function createSlackDriver(array $config)
{
return new Monolog($this->parseChannel($config), [
$this->prepareHandler(new SlackWebhookHandler(
$config['url'],
$config['channel'] ?? null,
$config['username'] ?? 'Laravel',
$config['attachment'] ?? true,
$config['emoji'] ?? ':boom:',
$config['short'] ?? false,
$config['context'] ?? true,
$this->level($config),
$config['bubble'] ?? true,
$config['exclude_fields'] ?? []
), $config),
]);
}
引数はこちらで
https://github.com/Seldaek/monolog/blob/master/src/Monolog/Handler/SlackWebhookHandler.php#L40-L49