guzzlehttp / log-subscriber
Logs HTTP requests and responses as they are sent over the wire (Guzzle 4+)
Installs: 2 629 690
Dependents: 34
Suggesters: 3
Security: 0
Stars: 41
Watchers: 8
Forks: 10
Open Issues: 3
Requires
- php: >=5.4.0
- guzzlehttp/guzzle: ~4.0 | ~5.0
- psr/log: ~1.0
Requires (Dev)
- phpunit/phpunit: ~4.0
This package is not auto-updated.
Last update: 2020-02-07 15:24:34 UTC
README
The LogSubscriber logs HTTP requests and responses to a
PSR-3 logger, callable, resource returned
by fopen()
, or by calling echo()
.
Here's the simplest example of how it's used:
use GuzzleHttp\Client; use GuzzleHttp\Subscriber\Log\LogSubscriber; $client = new Client(); $client->getEmitter()->attach(new LogSubscriber()); $client->get('http://httpbin.org');
Running the above example will echo a message using the 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
Note
Because no logger is provided, the subscriber simply logs messages with
echo()
. This is the method used for logging if null
is provided.
Installing
This project can be installed using Composer. Add the following to your composer.json:
{ "require": { "guzzlehttp/log-subscriber": "~1.0" } }
Using PSR-3 Loggers
You can provide a PSR-3 logger to the constructor as well. The following example shows how the LogSubscriber can be combined with 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);
Logging with a custom message format
The LogSubscriber's constructor accepts a logger as the first argument and a
message format string or a message formatter as the second argument. You could
log the full HTTP request and Response message using the debug format via
GuzzleHttp\Subscriber\Log\Formatter::DEBUG
.
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);
Message Formatter
Included in this repository is a message formatter. The message formatter is
used to format log messages for both requests and responses using a log
template that uses variable substitution for string enclosed in braces
({}
).
The following variables are available in message formatter templates:
- {request}
- Full HTTP request message
- {response}
- Full HTTP response message
- {ts}
- Timestamp
- {host}
- Host of the request
- {method}
- Method of the request
- {url}
- URL of the request
- {protocol}
- Request protocol
- {version}
- Protocol version
- {resource}
- Resource of the request (path + query + fragment)
- {hostname}
- Hostname of the machine that sent the request
- {code}
- Status code of the response (if available)
- {phrase}
- Reason phrase of the response (if available)
- {error}
- Any error messages (if available)
- {req_header_*}
- Replace
*
with the lowercased name of a request header to add to the message. - {res_header_*}
- Replace
*
with the lowercased name of a response header to add to the message - {req_headers}
- Request headers as a string.
- {res_headers}
- Response headers as a string.
- {req_body}
- Request body as a string.
- {res_body}
- Response body as a string.