Логирование
Клиент поддерживает PSR-3 логгеры. Рекомендуется настраивать логирование через .settings.php – в этом случае можно создавать разные экземпляры логгера для каждого запроса. Это может быть полезным для логирования пачки асинхронных запросов – например, записывать отладку в разные файлы, а не перемешанные части разных запросов в один файл.
Конструктор логгера получает объект типа \Bitrix\Main\Web\Http\DebugInterface, который позволяет установить уровень логирования (см. константы \Bitrix\Main\Web\HttpDebug), и объект запроса типа \Psr\Http\Message\RequestInterface.
return [
// ...
'loggers' => [
'value' => [
'main.HttpClient' => [
'constructor' => function (\Bitrix\Main\Web\Http\DebugInterface $debug, \Psr\Http\Message\RequestInterface $request) {
$debug->setDebugLevel(\Bitrix\Main\Web\HttpDebug::ALL);
return new \Bitrix\Main\Diag\FileLogger('/home/bitrix/www/httplog'. spl_object_hash($request) . '.txt');
},
'level' => \Psr\Log\LogLevel::DEBUG,
],
],
],
// ...
];
Возвращаемому логгеру можно установить свой форматтер. Например, чтобы просто логировать все обращения к внешним ресурсам через http-клиент, можно использовать следующее решение:
return [
// ...
'loggers' => [
'value' => [
'main.HttpClient' => [
'constructor' => function (\Bitrix\Main\Web\Http\DebugInterface $debug, \Psr\Http\Message\RequestInterface $request) {
$debug->setDebugLevel(\Bitrix\Main\Web\HttpDebug::REQUEST_HEADERS);
$logger = new \Bitrix\Main\Diag\FileLogger($_SERVER['DOCUMENT_ROOT'] . '/http.txt');
$logger->setFormatter(
new class($request) implements \Bitrix\Main\Diag\LogFormatterInterface
{
public function __construct(public \Psr\Http\Message\RequestInterface $request) {}
public function format($message, array $context = []): string
{
// Игнорировать запросы push-сервера
if ($this->request->getUri()->getPort() === 1337)
{
return '';
}
return $this->request->getUri() . " \t" . $_SERVER['REQUEST_URI'] . "\n";
}
}
);
return $logger;
},
'level' => \Psr\Log\LogLevel::DEBUG,
],
],
'readonly' => true,
],
// ...
];
© «Битрикс», 2001-2025, «1С-Битрикс», 2025