@brud
специально для самых нежных и трепетных

Как заставить логирование Guzzle работать в Laravel?

Всем привет, есть такая ситуация - приложение на ларавел 4.2, я поставил в него газл 6.0
Пробовал сделать через Middleware, но ничего не происходит:
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Middleware;
use GuzzleHttp\MessageFormatter;
use Monolog\Logger;

$stack = HandlerStack::create();
$stack->push(
    Middleware::log(
        new Logger('Logger'),
        new MessageFormatter('{req_body} - {res_body}')
    )
);
$client = new \GuzzleHttp\Client(
    [
        'base_uri' => 'some-url.com',
        'handler' => $stack,
    ]
);


В чем моя ошибка?

P.S. пробовал так же через "rtheunissen/guzzle-log-middleware": "^0.4.0" результат тот же...
  • Вопрос задан
  • 1849 просмотров
Решения вопроса 1
Denormalization
@Denormalization
Если нужно писать в общий лог файл лог Guzzle, то:
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Middleware;
use GuzzleHttp\MessageFormatter;
use Monolog\Logger;

$stack = HandlerStack::create();
$stack->push(
    Middleware::log(
        \Illuminate\Support\Facades\Log::getMonolog(),
        new MessageFormatter('{req_body} - {res_body}')
    )
);
$client = new \GuzzleHttp\Client(
    [
        'base_uri' => 'some-url.com',
        'handler' => $stack,
    ]
);


Оно будет писать в общий лог файл.
Если же нужно писать в кастомный лог файл, то:
use Monolog\Handler\StreamHandler;
// ....
$logger = new Logger('GuzzleLogger');
$logger->pushHandler(new StreamHandler(storage_path('logs/guzzle.log')));
$stack->push(
    Middleware::log(
       $logger,
        new MessageFormatter('{req_body} - {res_body}')
    )
);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы