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

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

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


person Parvez Alam    schedule 20.12.2018    source источник


Ответы (2)


То же самое для 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...) в конце.

person Yevgeniy Afanasyev    schedule 17.01.2019
comment
Не могли бы вы объяснить, что будет правильно выполнять автозаполнение и как вышеперечисленные методы могут не работать? - person Yevgeniy Afanasyev; 16.04.2020
comment
Спасибо. Вы правы, этот код создал бы неожиданное удручающее исключение. Я изменил код. - person Yevgeniy Afanasyev; 17.04.2020

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

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());
}
person mvorisek    schedule 03.06.2020