РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
696 of 1392 menu

Метод report

Метод report класса Handler отвечает за логирование исключений в Laravel. Он вызывается автоматически при возникновении исключения и позволяет управлять тем, как и куда будут записываться ошибки. По умолчанию метод передаёт исключение в систему логирования Laravel, которая использует настроенный драйвер (например, stack, single или daily). Вы можете переопределить этот метод в своём классе Handler, чтобы добавить кастомную логику логирования, например, отправку уведомлений в Slack или запись в базу данных.

Синтаксис

<?php namespace AppExceptions; use IlluminateFoundationExceptionsHandler as ExceptionHandler; use Throwable; class Handler extends ExceptionHandler { public function report(Throwable $e): void { parent::report($e); // Дополнительная логика } } ?>

Метод принимает один параметр - объект исключения, реализующий интерфейс Throwable. Возвращаемого значения нет (void). Внутри метода можно вызвать родительский метод для сохранения стандартного поведения или полностью переопределить логику.

Пример

Базовое использование метода report для логирования исключения в файл:

<?php namespace AppExceptions; use IlluminateFoundationExceptionsHandler as ExceptionHandler; use Throwable; class Handler extends ExceptionHandler { public function report(Throwable $e): void { parent::report($e); // Дополнительное логирование \Log::channel('daily')->error('Custom log: ' . $e->getMessage()); } } ?>

Пример

Пример отправки уведомления в Slack при возникновении критической ошибки:

<?php namespace AppExceptions; use IlluminateFoundationExceptionsHandler as ExceptionHandler; use IlluminateSupportFacadesLog; use Throwable; class Handler extends ExceptionHandler { public function report(Throwable $e): void { if ($this->shouldReport($e)) { Log::channel('slack')->critical('Critical error: ' . $e->getMessage(), [ 'file' => $e->getFile(), 'line' => $e->getLine(), 'trace' => $e->getTraceAsString() ]); } parent::report($e); } } ?>

Результат выполнения кода в логе Slack:

"Critical error: Division by zero"

Пример

Переопределение метода report для игнорирования определённых исключений:

<?php namespace AppExceptions; use IlluminateFoundationExceptionsHandler as ExceptionHandler; use IlluminateDatabaseEloquentModelNotFoundException; use Throwable; class Handler extends ExceptionHandler { public function report(Throwable $e): void { if ($e instanceof ModelNotFoundException) { // Не логируем ошибки ModelNotFoundException return; } parent::report($e); } } ?>

Пример

Использование метода report для записи в базу данных:

<?php namespace AppExceptions; use IlluminateFoundationExceptionsHandler as ExceptionHandler; use AppModelsErrorLog; use Throwable; class Handler extends ExceptionHandler { public function report(Throwable $e): void { ErrorLog::create([ 'message' => $e->getMessage(), 'code' => $e->getCode(), 'file' => $e->getFile(), 'line' => $e->getLine(), 'trace' => $e->getTraceAsString(), 'created_at' => now() ]); parent::report($e); } } ?>

Смотрите также

  • метод render,
    который отвечает за отображение исключений
  • метод shouldReport,
    который определяет, нужно ли логировать исключение
  • класс Handler,
    который обрабатывает все исключения в приложении
  • метод reportable,
    который позволяет регистрировать кастомные обработчики
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить