ホームページ >バックエンド開発 >PHPチュートリアル >BearyChat Laravel プロジェクトのエラー ログ通知ロボットを作成する

BearyChat Laravel プロジェクトのエラー ログ通知ロボットを作成する

WBOY
WBOYオリジナル
2016-06-23 13:04:19818ブラウズ

Laravel はログ処理のために Monolog を統合しています。実際、Monolog はすでに多くのハンドラーをサポートしています。これは、私たちのチームが Bearychat を使用しているためです。チームコミュニケーションツールでは、Laravel プロジェクトのリアルタイムエラーログが Bearychat のディスカッショングループにプッシュされ、チームメンバーが例外をすばやく見つけて問題を解決できるようになります。実際、これは非常に簡単で、わずか数行で実行できます。コードの。

    まずBearyChatHandlerを作成します
  • <?php  namespace App;use Monolog\Handler\AbstractProcessingHandler;  use Monolog\Logger;  use Monolog\Handler\Curl;class BearyChatHandler extends AbstractProcessingHandler  {    private $data;    private $webhook;    public function __construct($webhook, $channel, $level = Logger::NOTICE, $bubble = true)    {        $this->data['channel'] = $channel;        $this->webhook = $webhook;        parent::__construct($level, $bubble);    }    /**     * {@inheritDoc}     */    protected function write(array $record)    {        $postData = [            'text' => $record['datetime']->format('Y-m-d H:i:s') . '-' . $record["level"] . '-' . $record["level_name"],            'markdown' => false,            'notification' => 'Laravel Error Log',            'attachments' => [                [                    'title' => current(preg_split("/([.\n\r]+)/i", $record['message'])),                    'text' => $record['message'],                    'color' => '#ffa500'                ]            ]        ];        $postString = json_encode(array_merge($this->data, $postData));        $ch = curl_init();        curl_setopt($ch, CURLOPT_URL, $this->webhook);        curl_setopt($ch, CURLOPT_POST, true);        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);        curl_setopt($ch, CURLOPT_POSTFIELDS, $postString);        curl_setopt($ch, CURLOPT_HTTPHEADER, array(            "Content-Type: application/json"        ));        Curl\Util::execute($ch);    }}
AbstractProcessingHandlerを継承してwriteメソッドを書き換えるだけです $recordはMonologログの詳細です

    BearyChat Groupを作成するのに使用します。通知を受け取る
  • 新しいディスカッション グループを作成します (たとえば、「Laravel Error Log Report」という名前です)
    • ロボットをディスカッション グループに追加し、[Incoming] をクリックして、たとえば「Laravel Log Robot」という名前のグループを追加し、前の手順で作成した「Laravel Error」を送信対象のログレポートに設定し、WebhookのURLアドレスを取得します
    • このディスカッショングループに該当者を追加します
  • ChearyChatHandlerを統合する
  • 公式マニュアルこのようにして Monolog を完全に制御できると言います

カスタム Monolog 構成

アプリケーションの Monolog の構成方法を完全に制御したい場合は、アプリケーションの configureMonologUsing メソッドを呼び出す必要があります。 $ app 変数がファイルによって返される直前に、bootstrap/app.php ファイル内で次のように記述します。

return $app;

ただし、ChearyChat への送信に加えて、ログ ファイルへのデフォルトの記録方法も保持する必要があるため、これを行わずに、ChearyChatHandler を例外ハンドラ。

app/Exceptions/Handler.php を変更し、レポート メソッドに次のコードを追加します:
<?phpnamespace App\Exceptions;use App\BearyChatHandler;  ......use Log;class Handler extends ExceptionHandler  {   ......    public function report(Exception $e)    {        $monolog = Log::getMonolog();        $monolog->pushHandler(new BearyChatHandler('https://yourhookurl','Laravel日志机器人'));        return parent::report($e);    }......}

さて、意図的にコードにエラーを記述し、BearyChat がエラー ログを受信するかどうかを確認します。

転載する場合はその旨を明記してください: Ryan は新人です | LNMP テクノロジー スタック ノートから転載

この記事が非常に役立つと思われる場合は、ご褒美をあげてみてはいかがでしょうか

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:PHPの基本操作次の記事:PHPの基本操作