guzzlehttp/log-subscriber

此包已被废弃,不再维护。没有建议的替代包。

记录通过线缆发送的HTTP请求和响应(Guzzle 4+)

1.0.1 2014-10-13 03:31 UTC

This package is not auto-updated.

Last update: 2020-02-07 15:24:34 UTC


README

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 的构造函数接受一个日志器作为第一个参数,一个消息格式字符串或一个消息格式化器作为第二个参数。您可以使用 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_*}
* 替换为要添加到消息中的请求头的低ASCII名称。
{res_header_*}
* 替换为要添加到消息中的响应头的低ASCII名称。
{req_headers}
请求头作为字符串。
{res_headers}
响应头作为字符串。
{req_body}
请求体作为字符串。
{res_body}
响应体作为字符串。