ホームページ  >  記事  >  PHPフレームワーク  >  Laravelで例外通知にSlackを使用する方法

Laravelで例外通知にSlackを使用する方法

藏色散人
藏色散人転載
2020-03-16 08:57:433186ブラウズ

例外処理はソフトウェア開発プロセスにおいて避けられない問題です。適切に設計されたコードと効率的なコードを備えたプログラムでは、例外が発生する可能性は比較的低くなりますが、これは例外が発生しないことを意味するものではなく、一部の例外は深刻な結果を引き起こす可能性があるため、プログラム内の例外を発見して処理する方法は次のとおりです。タイムリーにそれは非常に重要になります。

推奨: laravel チュートリアル

通常、ユーザーからのフィードバックを頼りに、プログラムの問題を見つけるためにプログラム ログをチェックすることがよくあります。しかし、これでは信頼性が低い、またはタイムリーではないため、以下では Slack 通知プログラムによって実行される例外情報を使用した、より効果的な方法を紹介します。

Slack は、QQ に似たインスタント メッセージング ソフトウェアです。Slack は、チーム内の指定された個人またはチャネルにメッセージを送信するために呼び出すことができるオープン API を提供するため、例外通知にこれを使用することはできません。より適切な。

1. maknz/slack-laravel パッケージをインストールします

具体的安装方法请参考 Github 上的 [readme](https://github.com/maknz/slack-laravel)。

2. 構成

安装完成后使用 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. AppExceptionsHandler クラスのレポート メソッドを調整して、Slack 通知のロジックを実装します例外情報の。コードは次のとおりです。

/**
 * 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);
}

404 NotFoundHttpException など、頻繁に発生する可能性はあるものの致命的ではない一部の例外については、プログラムに通知させたくない場合があります。これを行うには、指定された例外タイプを Aop\Exceptions\Handler クラスの $dontReort 属性に追加するだけです。

    protected $dontReport = [
        NotFoundHttpException::class,
        // ...
    ];

この例では、指定したチャネル (チャンネル) に情報を送信する例を示していますが、もちろん、指定した人に送信するなど、より複雑な使い方も可能です。ただし、指定したユーザー名とチャネルが Slack チームにすでに存在していることに注意してください。存在しないとエラーが発生します。

これにより、プログラムで例外が発生した場合に、運用保守側は関連する通知情報をいち早く受け取ることができ、タイムリーな処理が容易になります。

関連する推奨事項、PHP ビデオ チュートリアル学習アドレス: https://www.php.cn/course/list/29/type/2.html

以上がLaravelで例外通知にSlackを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。