PHP
#php#logging#error-log#json#production#debug

PHP: быстрый логгер-обёртка для продакшна

Простая обёртка над error_log для структурированного логирования в JSON формате с контекстом для продакшн-приложений.

Как использовать

  1. Скопируйте нужный фрагмент кода.
  2. Вставьте в свой проект и при необходимости измените под задачу.
  3. Проверьте зависимости и окружение (версии, переменные).

Простая обёртка над 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
  • Для высоконагруженных систем рассмотрите асинхронное логирование через очереди