PHPackages                             wucdbm/http-logger-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. wucdbm/http-logger-bundle

ActiveSymfony-bundle[HTTP &amp; Networking](/categories/http)

wucdbm/http-logger-bundle
=========================

A Symfony 3.0 Bundle for hosting HTTP Request/Responses, as well as exceptions that occur during the handling of those

v3.0.14(9y ago)0904GPL-3.0PHPPHP ~7.0

Since Oct 26Pushed 8y ago1 watchersCompare

[ Source](https://github.com/wucdbm/http-logger-bundle)[ Packagist](https://packagist.org/packages/wucdbm/http-logger-bundle)[ RSS](/packages/wucdbm-http-logger-bundle/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (4)Versions (17)Used By (0)

Purpose
=======

[](#purpose)

The purpose of this Bundle is to log HTTP Request/Responses in logs. In addition to that, you can host exceptions (\\Throwable). This is especially useful when working with terribly written APIs you have no control of, that tend to easily break libxml (and thus Symfony's Crawler).

Presentation
============

[](#presentation)

At this point, the bundle has no presentation of the data it collects. You should implement that on your own.

Basic Usage
===========

[](#basic-usage)

```
$manager = $this->container->get('some.manager');
$log = $manager->log('This is some message with any information that would eventually help you once you need to debug something');

try {
    $client = new \GuzzleHttp\Client();
    $request = new Request('GET', 'http://some-website.com/');

    $manager->logRequest($log, $request, RequestLogMessageType::ID_TEXT_PLAIN);

    $response = $client->send($request);

    $manager->logResponse($log, $response, RequestLogMessageType::ID_HTML);

    $ex = new \Exception('First Exception');

    throw new \Exception('Second Exception', 0, $ex);
} catch (\Throwable $e) {
    $manager->logException($log, $e);
}

```

Advanced Usage
==============

[](#advanced-usage)

```
$log = $this->log('SomeClass::someMethod()');

try {
    $request = new Request('POST', 'https://someUri.com/API', [
        RequestOptions::BODY => 'SomeBody'
    ]);

    $this->logRequest($log, $request, RequestLogMessageType::ID_XML);

    $this->pool->sendAsync($request, function (ResponseInterface $response) use ($log) {
        try {
            $rawResponse = $response->getBody()->getContents();

            $this->logResponse($log, $response, RequestLogMessageType::ID_XML);

            $crawler = new Crawler($rawResponse);

            try {
                // do some Crawler work
            } catch (\InvalidArgumentException $ex) {
                $this->exception($log, $ex, $crawler->html());
            }
        } catch (\Throwable $ex) {
            $this->exception($log, $ex);
        }
    }, function (RequestException $ex) use ($log) {
        $this->requestException($log, $ex, RequestLogMessageType::ID_XML);
    });
} catch (\Throwable $ex) {
    $this->exception($log, $ex);
}

```

There is also a method called "logGuzzleException". It is a shorthand for logging the response, if any, upon HTTP 500 and such. Keep in mind that this is a very basic example. The real power of this bundle comes when you have to execute tons of requests asynchronously, without human overview, via curl, and where it is painfully hard to find which one exactly went broke, without proper logging.

Installation &amp; Setup
========================

[](#installation--setup)

config.yml
----------

[](#configyml)

```
wucdbm_http_logger:
    configs:
        bookings:
            table_prefix: some_logs__
            log_class: Some\Name\Space\RequestLog
            log_message_class: Some\Name\Space\RequestLogMessage
            log_message_type_class: Some\Name\Space\RequestLogMessageType
            log_exception_class: Some\Name\Space\RequestLogException

```

AppKernel
---------

[](#appkernel)

```
new \Wucdbm\Bundle\WucdbmHttpLoggerBundle\WucdbmHttpLoggerBundle(),

```

You need to extend each of the entities and create your own. You can freely add any additional fields and map them via your preferred method. The base mapping is done via a Subscriber in the bundle.

```
