ホームページ >バックエンド開発 >PHPチュートリアル >BearyChat Laravel プロジェクトのエラー ログ通知ロボットを作成する
Laravel はログ処理のために Monolog を統合しています。実際、Monolog はすでに多くのハンドラーをサポートしています。これは、私たちのチームが Bearychat を使用しているためです。チームコミュニケーションツールでは、Laravel プロジェクトのリアルタイムエラーログが Bearychat のディスカッショングループにプッシュされ、チームメンバーが例外をすばやく見つけて問題を解決できるようになります。実際、これは非常に簡単で、わずか数行で実行できます。コードの。
<?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ログの詳細です
新しいディスカッション グループを作成します (たとえば、「Laravel Error Log Report」という名前です)
カスタム Monolog 構成
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 テクノロジー スタック ノートから転載
この記事が非常に役立つと思われる場合は、ご褒美をあげてみてはいかがでしょうか