Логирование в PHP через REST API
Передавайте логи из PHP-приложения одним POST-запросом и наблюдайте за событиями в реальном времени. Без установки агентов и без инфраструктуры для хранения логов.
Отправка через cURL
Отправьте первое событие из PHP за пару минут. Consumer Key выдаётся после регистрации в веб-интерфейсе.
<?php
$url = "https://logger.dp-projects.ru/sendmess";
$payload = [
'key' => 'ваш-consumer-key',
'module' => 'payment-service',
'mess' => [
'event' => 'payment_processed',
'amount' => 1000,
'status' => 'success',
],
'mode' => 'regular',
];
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 5,
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Обработчик для Monolog
Monolog — стандарт логирования в PHP и Laravel. Свой Handler позволит отправлять в Logger любые записи, включая уже существующие вызовы $logger->info().
<?php
use Monolog\Logger;
use Monolog\Handler\AbstractProcessingHandler;
use Monolog\Level;
use Monolog\LogRecord;
class LoggerAPIHandler extends AbstractProcessingHandler
{
public function __construct(private string $key, string $module = 'php-app')
{
parent::__construct(Level::Debug);
$this->module = $module;
}
protected function write(LogRecord $record): void
{
$ch = curl_init("https://logger.dp-projects.ru/sendmess");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'key' => $this->key,
'module' => $this->module,
'mess' => $record->formatted,
]),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 3,
]);
curl_exec($ch);
curl_close($ch);
}
}
$logger = new Logger('app');
$logger->pushHandler(new LoggerAPIHandler('ваш-consumer-key'));
$logger->info('Сервис запущен');
Особенности логирования из PHP
- 01
Без Composer-зависимостей
Базовый пример работает на чистом PHP через cURL или file_get_contents.
- 02
Совместимо с Laravel и Symfony
Monolog уже встроен в оба фреймворка, поэтому Handler добавляется в существующий стек.
- 03
Не хранится на сервере
Logger доставляет события, а не ведёт архив — это осознанное решение продукта.
Частые вопросы
Как быстро отправить лог из PHP без библиотек?
Используйте file_get_contents с stream_context_create или cURL — полный пример cURL приведён выше, он занимает около двадцати строк.
Работает ли Logger с Laravel?
Да. Добавьте Handler в config/logging.php как отдельный канал, и записи Log::info() будут уходить в Logger через Monolog.
Есть ли лимит на размер сообщения?
Сервер принимает JSON до 100 МБ, но для логов разумно держать сообщения компактными — так их проще читать в реальном времени.
Отправка логов из других языков
Поймайте следующее событие.
Откройте клиент, получите Consumer Key и отправьте первый лог из PHP.