Guzzle Http 未使用 Monolog 登录 Laravel

Guzzle Http Not Logging In Laravel With Monolog

我有这个例子:

use Monolog\Logger;
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Middleware;
use GuzzleHttp\MessageFormatter;

    public function getApiTest()
    {

        $stack = HandlerStack::create();
        $stack->push(
            Middleware::log(
                new Logger('Logger'),
                new MessageFormatter('{req_body} - {res_body}')
            )
        );

        $client = new \GuzzleHttp\Client(
            [
                'base_uri' => 'http://apitesting.test/api/',
                'handler' => $stack,
            ]
        );

        echo (string) $client->get('apitest')->getBody();
    }

根据我的理解,应该记录请求和响应。

我有一个自定义的日志记录通道,用于记录到数据库。但是我现在禁用了它并返回到 Laravel 的文件记录 - 但这仍然没有记录 Guzzle request/response.

Middleware::log() 的第一个参数似乎是您尝试使用的日志通道。例如:

$stack = HandlerStack::create();

$logChannel = app()->get('log')->channel('my-custom-channel');

$stack->push(
    Middleware::log(
        $logChannel,
        new MessageFormatter('{req_body} - {res_body}')
    )
);

这将告诉中间件您正尝试使用哪个日志通道。