hrodic / guzzle5-log-subscriber
将HTTP请求和响应以它们在网络上传输的方式记录(Guzzle 4+)
1.0.2
2016-03-17 08:38 UTC
Requires
- php: >=5.4.0
- guzzlehttp/guzzle: ~4.0 | ~5.0
- psr/log: ~1.0
Requires (Dev)
- phpunit/phpunit: ~4.0
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}
- 响应体作为字符串。