hrodic/guzzle5-log-subscriber

将HTTP请求和响应以它们在网络上传输的方式记录(Guzzle 4+)

1.0.2 2016-03-17 08:38 UTC

This package is auto-updated.

Last update: 2024-09-23 06:37:10 UTC


README

有什么新内容?

与流一起工作(修复了bug)

Guzzle日志订阅者

LogSubscriber将HTTP请求和响应记录到PSR-3日志记录器、可调用的资源或通过调用echo()返回的资源。

以下是一个使用示例

use GuzzleHttp\Client;
use GuzzleHttp\Subscriber\Log\LogSubscriber;

$client = new Client();
$client->getEmitter()->attach(new LogSubscriber());
$client->get('http://httpbin.org');

运行上面的示例将使用Apache Common Log Format (CLF)输出一条消息。

[info] hostname Guzzle/5.0 curl/7.21.4 PHP/5.5.7 - [2014-03-01T22:48:13+00:00] "GET / HTTP/1.1" 200 7641

注意

因为没有提供日志记录器,订阅者只是使用echo()记录消息。如果提供null,则使用此方法进行日志记录。

安装

可以使用Composer安装此项目。将以下内容添加到您的composer.json中

{
    "require": {
        "guzzlehttp/log-subscriber": "~1.0"
    }
}

使用PSR-3日志记录器

您还可以将PSR-3日志记录器提供给构造函数。以下示例显示了如何将LogSubscriber与Monolog结合使用。

use GuzzleHttp\Client;
use GuzzleHttp\Subscriber\Log\LogSubscriber;
use Monolog\Logger;
use Monolog\Handler\StreamHandler;

// create a log channel
$log = new Logger('name');
$log->pushHandler(new StreamHandler('/path/to/your.log', Logger::WARNING));

$client = new Client();
$subscriber = new LogSubscriber($log);
$client->getEmitter()->attach($subscriber);

使用自定义消息格式进行日志记录

LogSubscriber的构造函数接受一个日志记录器作为第一个参数,以及一个消息格式字符串或一个消息格式化器作为第二个参数。您可以使用debug格式通过GuzzleHttp\Subscriber\Log\Formatter::DEBUG记录完整的HTTP请求和响应消息。

use GuzzleHttp\Subscriber\Log\LogSubscriber;
use GuzzleHttp\Subscriber\Log\Formatter;

// Log the full request and response messages using echo() calls.
$subscriber = new LogSubscriber(null, Formatter::DEBUG);

消息格式化器

此存储库包含一个消息格式化器。消息格式化器用于使用变量替换括号中括号({})的日志模板来格式化请求和响应的日志消息。

以下变量在消息格式化器模板中可用

{request}
完整的HTTP请求消息
{response}
完整的HTTP响应消息
{ts}
时间戳
{host}
请求的主机
{method}
请求方法
{url}
请求的URL
{protocol}
请求协议
{version}
协议版本
{resource}
请求的资源(路径+查询+片段)
{hostname}
发送请求的机器的主机名
{code}
响应的状态码(如果可用)
{phrase}
响应的原因短语(如果可用)
{error}
任何错误消息(如果可用)
{req_header_*}
*替换为要添加到消息中的请求头的小写名称。
{res_header_*}
*替换为要添加到消息中的响应头的小写名称。
{req_headers}
请求头作为字符串。
{res_headers}
响应头作为字符串。
{req_body}
请求体作为字符串。
{res_body}
响应体作为字符串。