interfaces/ILogFormatter.md
Интерфейс ILogFormatter
Пространство имён: goodboyalex\php_components_pack\interfaces
Версия: 1.0
Доступно с: 1.3
Описание
Интерфейс определяет контракт для форматеров журнала сообщений, которые могут форматировать сообщения системы журналирования в соответствии с заданными правилами.
Методы интерфейса
formatMessage()
public function formatMessage(MessageType $level, string $message, array $context = []): string
Описание: Форматирует сообщение согласно заданным параметрам.
Параметры:
$level(MessageType) — уровень сообщения (DEBUG, INFO, WARNING, ERROR)$message(string) — текст сообщения$context(array) — контекстные данные сообщения (опционально)
Возвращаемое значение:
string— отформатированное сообщение
Рекомендации по реализации
-
При реализации интерфейса:
- Учитывайте уровень сообщения при форматировании
- Обрабатывайте контекстные данные
- Обеспечьте читаемость и структурированность вывода
-
При использовании:
- Применяйте различные форматы для разных уровней
- Используйте контекст для дополнительной информации
- Обеспечьте консистентность формата
Примеры реализации
Базовый форматер
class SimpleLogFormatter implements ILogFormatter
{
public function formatMessage(MessageType $level, string $message, array $context = []): string
{
return sprintf(
'[%s] %s',
$level->toString(),
$message
);
}
}
Расширенный форматер
class DetailedLogFormatter implements ILogFormatter
{
public function formatMessage(MessageType $level, string $message, array $context = []): string
{
$formattedContext = !empty($context) ? json_encode($context) : '';
return sprintf(
'[%s] %s | Контекст: %s',
date('Y-m-d H:i:s'),
$level->toString(),
$message,
$formattedContext
);
}
}
Особенности реализации
- Формат сообщения должен быть читаемым
- Учитывайте производительность при работе с большими логами
- Обеспечьте возможность настройки формата
- Поддерживайте различные уровни детализации
Типичные ошибки
- Отсутствие обработки контекста
- Некорректное форматирование специальных символов
- Потеря важной информации при форматировании