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}')
)
);
这将告诉中间件您正尝试使用哪个日志通道。
我有这个例子:
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}')
)
);
这将告诉中间件您正尝试使用哪个日志通道。