Skip to content
Snippets Groups Projects
Commit 44633a57 authored by Grzegorz Rola's avatar Grzegorz Rola
Browse files

bugfix(logger): memory consumption

parent 1c489b81
No related branches found
No related tags found
1 merge request!7bugfix(logger): memory consumption
### [1.2.2] - 2024-11-25
### Fixed
- Memory consumption in api client - logger calls consumes memory, specially when large responses are logged
## [1.2.1] - 2020-12-08
### Fixed
- default headers should overwrite build in headers
......
......@@ -4,6 +4,7 @@ namespace WPDesk\ApiClient\Client;
use Psr\Log\LoggerAwareInterface;
use Psr\Log\LoggerInterface;
use Psr\Log\NullLogger;
use WPDesk\HttpClient\HttpClient;
use WPDesk\HttpClient\HttpClientResponse;
use WPDesk\ApiClient\Request\Request;
......@@ -36,6 +37,9 @@ class ClientImplementation implements Client, LoggerAwareInterface
/** @var int */
private $timeout;
/** @var bool */
private $is_logger_available = false;
/**
* Client constructor.
* @param HttpClient $client
......@@ -59,6 +63,7 @@ class ClientImplementation implements Client, LoggerAwareInterface
$this->apiUrl = $apiUri;
$this->defaultRequestHeaders = $defaultRequestHeaders;
$this->timeout = $timeout;
$this->is_logger_available = ! $logger instanceof NullLogger;
}
/**
......@@ -70,8 +75,10 @@ class ClientImplementation implements Client, LoggerAwareInterface
*/
public function sendRequest(Request $request)
{
$this->logger->debug("Sends request with METHOD: {$request->getMethod()}; to ENDPOINT {$request->getEndpoint()}",
$this->getLoggerContext());
if ($this->is_logger_available) {
$this->logger->debug("Sends request with METHOD: {$request->getMethod()}; to ENDPOINT {$request->getEndpoint()}",
$this->getLoggerContext());
}
try {
$httpResponse = $this->client->send(
$fullUrl = $this->prepareFullUrl($request),
......@@ -81,11 +88,16 @@ class ClientImplementation implements Client, LoggerAwareInterface
$this->timeout
);
$this->logger->debug(
"Sent request with: URL: {$fullUrl};\n METHOD: {$method};\n BODY: {$body};\n"
. "HEADERS: " . json_encode($headers) . "\n\n and got response as CODE: {$httpResponse->getResponseCode()};\n"
. "with RESPONSE BODY {$httpResponse->getBody()}",
$this->getLoggerContext());
if ($this->is_logger_available) {
$this->logger->debug(
"Sent request with: URL: {$fullUrl};\n METHOD: {$method};\n BODY: {$body};\n"
."HEADERS: ".json_encode(
$headers
)."\n\n and got response as CODE: {$httpResponse->getResponseCode()};\n"
."with RESPONSE BODY {$httpResponse->getBody()}",
$this->getLoggerContext()
);
}
return $this->mapHttpResponseToApiResponse($httpResponse);
......@@ -218,4 +230,4 @@ class ClientImplementation implements Client, LoggerAwareInterface
}
}
\ No newline at end of file
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment