PHP: быстрый логгер-обёртка для продакшна
Простая обёртка над error_log для структурированного логирования в JSON формате с контекстом для продакшн-приложений.
Как использовать
- Скопируйте нужный фрагмент кода.
- Вставьте в свой проект и при необходимости измените под задачу.
- Проверьте зависимости и окружение (версии, переменные).
Простая обёртка над error_log для структурированного логирования в JSON формате с контекстом. Подходит для продакшн-приложений без тяжелых зависимостей.
<?php
function logMessage(string $level, string $message, array $context = []): void
{
$log = [
'timestamp' => date('c'),
'level' => $level,
'message' => $message,
'context' => $context,
];
error_log(json_encode($log, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
}
// Использование
logMessage('INFO', 'User logged in', ['user_id' => 123, 'ip' => '192.168.1.1']);
logMessage('ERROR', 'Database connection failed', ['host' => 'db.example.com', 'error' => $e->getMessage()]);
logMessage('WARNING', 'Slow query detected', ['query_time' => 2.5, 'query' => 'SELECT * FROM users']);
Usage:
// В Laravel можно добавить в сервис-провайдер или использовать как helper
logMessage('INFO', 'Payment processed', ['order_id' => $orderId, 'amount' => $amount]);
Notes:
- JSON формат удобен для парсинга логов (ELK, Grafana, etc.)
JSON_UNESCAPED_UNICODEсохраняет кириллицу читаемой- Можно добавить фильтрацию чувствительных данных (пароли, токены) в
$context - Для высоконагруженных систем рассмотрите асинхронное логирование через очереди