Журнал ошибок усечен в Laravel of Guzzle http

Guzzle http обрезает исключения с более чем 120 символами, но мне нужно регистрировать полное сообщение об исключении. Как я могу это сделать?

Я использую laravel 4.2.22.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
3
0
6 458
3

Ответы 3

То же самое для Laravel 5 и 4

    try {
        $response = $client->post($path, $params);
    } catch (\GuzzleHttp\Exception\RequestException $ex) {
        \Log::debug('error');
        \Log::debug((string) $ex->getResponse()->getBody());
        throw $ex;
    }

если вы просто перейдете на $ex->getMessage(), вы получите (truncated...) в конце.

Не могли бы вы объяснить, что будет «автозаполнение правильно» и как «вышеперечисленные методы не сработают»?

Yevgeniy Afanasyev 16.04.2020 02:32

Спасибо. Вы правы, этот код создаст неожиданное удручающее исключение. Я изменил код.

Yevgeniy Afanasyev 17.04.2020 04:01

Может быть лучшим решением:

try {
    // do request here like:
    // return $client->post($path, $params);
} catch (\GuzzleHttp\Exception\ServerException $ex) {
    $exFactoryWithFullBody = new class('', $ex->getRequest()) extends \GuzzleHttp\Exception\RequestException {
        public static function getResponseBodySummary(ResponseInterface $response)
        {
            return $response->getBody()->getContents();
        }
    };

    throw $exFactoryWithFullBody->create($ex->getRequest(), $ex->getResponse());
}
try {
    // whatever
} catch (\GuzzleHttp\Exception\RequestException $ex) {
     return $ex->getResponse()->getBody()->getContents(); 
     // you can even json_decode the response like json_decode($ex->getResponse()->getBody()->getContents(), true)    
}

Другие вопросы по теме