La gestion des exceptions est un problème inévitable dans le processus de développement logiciel. Pour un programme avec un code bien conçu et efficace, la possibilité d'exceptions sera relativement faible, mais cela ne signifie pas que des exceptions ne se produiront pas. Certaines exceptions peuvent même entraîner de graves conséquences, alors comment découvrir et gérer les exceptions dans le programme. en temps opportun Cela devient très important.
Recommandé : tutoriel Laravel
Habituellement, nous pouvons nous fier aux commentaires des utilisateurs et vérifier souvent les journaux du programme pour trouver des problèmes avec le programme. Mais cela n’est pas fiable ou n’est pas opportun, c’est pourquoi nous présentons ci-dessous une méthode plus efficace utilisant les informations d’exception gérées par le programme de notification Slack.
Slack est un logiciel de messagerie instantanée, similaire à QQ. Il fournit une API ouverte, qui peut être appelée pour envoyer des messages à des personnes ou à des canaux désignés dans votre équipe. Il est donc préférable de l'utiliser pour les notifications d'exception. Cela ne pourrait pas être plus approprié.
1. Installez le package maknz/slack-laravel
具体的安装方法请参考 Github 上的 [readme](https://github.com/maknz/slack-laravel)。
2. Configurez
安装完成后使用 php artisan vendor:publish 生成 config\slack.php 配置文件,然后在.env文件中添加如下三项配置值. ``` SLACK_ENDPOINT=//slack 终端,即 slack 接口地址 SLACK_CHANNEL=//消息默认接收频道 SLACK_USERNAME//消息默认接收人 ``` > 当然,也可以直接直接在 config\slack.php 对应配置的默认值而不使用 .env,但并不推荐这样做。 > 根据实际需要设置 SLACK_CHANNEL 和 SLACK_USERNAME ,二者并不是必须的
3. Ajustez la méthode de rapport de la classe AppExceptionsHandler pour implémenter la logique de notification Slack. d'informations sur les exceptions. Le code est le suivant :
/** * Report or log an exception. * * This is a great spot to send exceptions to Sentry, Bugsnag, etc. * * @param \Exception $e * @return void */ public function report(Exception $e) { if ($this->shouldReport($e)) { $slackMessage = "\n[Error.{$e->getCode()}] {$e->getMessage()}"; $slackMessage.= "\n[Line.{$e->getLine()}] {$e->getFile()}"; $slackMessage.= "\n[Time] ".date('Y-m-d H:i:s'); try { Slack::to(config('slack.channel'))->send($slackMessage); } catch (\Exception $eOther) { \Log::info($slackMessage); } } return parent::report($e); }
Pour certaines exceptions qui peuvent survenir fréquemment mais ne sont pas fatales, comme 404 NotFoundHttpException, nous pouvons ne pas vouloir que le programme le notifie. Pour ce faire, il suffit d'ajouter le type d'exception spécifié à l'attribut $dontReort dans la classe AopExceptionsHandler.
protected $dontReport = [ NotFoundHttpException::class, // ... ];
L'exemple montre l'envoi d'informations à un canal spécifié. Bien sûr, vous pouvez également envoyer des informations à des personnes spécifiées, ou à d'autres utilisations plus complexes. Cependant, veuillez noter que le nom d'utilisateur et le canal spécifiés existent déjà dans votre équipe Slack, sinon une erreur se produira.
De cette manière, lorsqu'une exception se produit dans le programme, l'exploitation et la maintenance peuvent recevoir des informations de notification pertinentes dès que possible, ce qui facilite un traitement en temps opportun.
Recommandations associées, adresse d'apprentissage du didacticiel vidéo PHP : https://www.php.cn/course/list/29/type/2.html
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!