Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. MessageFormatter.php

function MessageFormatter::format

Returns a formatted message string.

Parameters

RequestInterface $request Request that was sent:

ResponseInterface|null $response Response that was received:

\Throwable|null $error Exception that was received:

Overrides MessageFormatterInterface::format

File

vendor/guzzlehttp/guzzle/src/MessageFormatter.php, line 71

Class

MessageFormatter
Formats log messages using variable substitutions for requests, responses, and other transactional data.

Namespace

GuzzleHttp

Code

public function format(RequestInterface $request, ?ResponseInterface $response = null, ?\Throwable $error = null) : string {
    $cache = [];
    
    /** @var string */
    return \preg_replace_callback('/{\\s*([A-Za-z_\\-\\.0-9]+)\\s*}/', function (array $matches) use ($request, $response, $error, &$cache) {
        if (isset($cache[$matches[1]])) {
            return $cache[$matches[1]];
        }
        $result = '';
        switch ($matches[1]) {
            case 'request':
                $result = Psr7\Message::toString($request);
                break;
            case 'response':
                $result = $response ? Psr7\Message::toString($response) : '';
                break;
            case 'req_headers':
                $result = \trim($request->getMethod() . ' ' . $request->getRequestTarget()) . ' HTTP/' . $request->getProtocolVersion() . "\r\n" . $this->headers($request);
                break;
            case 'res_headers':
                $result = $response ? \sprintf('HTTP/%s %d %s', $response->getProtocolVersion(), $response->getStatusCode(), $response->getReasonPhrase()) . "\r\n" . $this->headers($response) : 'NULL';
                break;
            case 'req_body':
                $result = $request->getBody()
                    ->__toString();
                break;
            case 'res_body':
                if (!$response instanceof ResponseInterface) {
                    $result = 'NULL';
                    break;
                }
                $body = $response->getBody();
                if (!$body->isSeekable()) {
                    $result = 'RESPONSE_NOT_LOGGEABLE';
                    break;
                }
                $result = $response->getBody()
                    ->__toString();
                break;
            case 'ts':
            case 'date_iso_8601':
                $result = \gmdate('c');
                break;
            case 'date_common_log':
                $result = \date('d/M/Y:H:i:s O');
                break;
            case 'method':
                $result = $request->getMethod();
                break;
            case 'version':
                $result = $request->getProtocolVersion();
                break;
            case 'uri':
            case 'url':
                $result = $request->getUri()
                    ->__toString();
                break;
            case 'target':
                $result = $request->getRequestTarget();
                break;
            case 'req_version':
                $result = $request->getProtocolVersion();
                break;
            case 'res_version':
                $result = $response ? $response->getProtocolVersion() : 'NULL';
                break;
            case 'host':
                $result = $request->getHeaderLine('Host');
                break;
            case 'hostname':
                $result = \gethostname();
                break;
            case 'code':
                $result = $response ? $response->getStatusCode() : 'NULL';
                break;
            case 'phrase':
                $result = $response ? $response->getReasonPhrase() : 'NULL';
                break;
            case 'error':
                $result = $error ? $error->getMessage() : 'NULL';
                break;
            default:
                // handle prefixed dynamic headers
                if (\strpos($matches[1], 'req_header_') === 0) {
                    $result = $request->getHeaderLine(\substr($matches[1], 11));
                }
                elseif (\strpos($matches[1], 'res_header_') === 0) {
                    $result = $response ? $response->getHeaderLine(\substr($matches[1], 11)) : 'NULL';
                }
        }
        $cache[$matches[1]] = $result;
        return $result;
    }, $this->template);
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal