Абстрактный класс: LogGenerator¶
Краткое содержание:¶
Абстрактный класс для управления процессом логирования. Класс включает в себя базовый функционал для записи логов в файлы, базу данных и отправки уведомлений в Telegram.
Свойства¶
- protected $db_logs
- protected $initialized
- protected $logs
- protected $telegram_bot
- protected $telegram_channel
- protected $telegram_send
- protected $telegram_type
Методы¶
- public generateLog()
- public getAllowedType()
- public getAllowedTypes()
- public getLogs()
- public getTelegramBot()
- public getTelegramChannel()
- public getTelegramType()
- public init()
- public isDbLogs()
- public isTelegramSend()
- public setDbLogs()
- public setLogs()
- public setTelegramBot()
- public setTelegramChannel()
- public setTelegramSend()
- public setTelegramType()
- private createLogDirectory()
- private dbLog()
- private fileLog()
- private formatMessage()
- private getErrorNotification()
- private telegramLog()
Подробности¶
- Путь: engine/inc/maharder/_includes/classes/LogGenerator.php
Свойства¶
protected $db_logs : bool¶
Краткое содержание
Сохранять логи в базе данных
Тип: Логические значения
protected $initialized : bool¶
Краткое содержание
Проверяет, сформирован класс или нет
Тип: Логические значения
Tags¶
| Тэг | Версия | Описание |
|---|---|---|
| since | 173.3.0 |
protected $logs : bool¶
Краткое содержание
Регулятор логирования системы
Тип: Логические значения
protected $telegram_bot : ?string¶
Краткое содержание
API телеграм бота, который будет отправлять логи
Тип: Текст или null
protected $telegram_channel : string|int|null¶
Краткое содержание
ID канала, куда будут отправляться логи
Тип: Текст / целое число / null
protected $telegram_send : bool¶
Краткое содержание
Регулятор отправки логов в телеграм канал По умолчанию - выключен
Тип: Логические значения
protected $telegram_type : ?string¶
Краткое содержание
Тип логов, которые будут отправлены в телеграм
Тип: Текст или null
Подробности:
Методы¶
generateLog¶
| Text Only | |
|---|---|
Краткое содержание¶
Генерация лог-файлов при возникновении ошибки или другой значимой ситуации в процессе работы системы.
Описание¶
Данная функция создаёт лог-файлы в зависимости от указанного типа ошибки, хранит подробную информацию о сервисе, функции, дате/времени и сообщении. Помимо записи в файл, опционально отправляются уведомления в Telegram и сохраняются логи в базу данных.
Свойства:¶
| Название | Тип | По умолчанию |
|---|---|---|
| $service | string | |
| $functionName | string | |
| $message | mixed | |
| $type | string | "error" |
Ошибки:¶
| Тип | Описание |
|---|---|
| \JsonException|\Throwable | Исключение, связанное с ошибками в JSON-конверсии (может быть выброшено при выполнении Telegram-лога). |
Возвращает:¶
| Text Only | |
|---|---|
getAllowedType¶
| Text Only | |
|---|---|
Краткое содержание¶
Возвращает описание разрешенного типа ошибки по его ключу.
Описание¶
Перечень всех доступных типов с их описаниями задается методом getAllowedTypes(). Если указанный ключ $type отсутствует в списке, будет сгенерирована ошибка типа PHP undefined index.
Свойства:¶
| Название | Тип | По умолчанию |
|---|---|---|
| $type | string |
Возвращает:¶
| Text Only | |
|---|---|
Описание типа ошибки, соответствующее переданному ключу.
getAllowedTypes().
getAllowedTypes¶
| Text Only | |
|---|---|
Краткое содержание¶
Возвращает массив доступных типов сообщений с их локализованными описаниями.
Описание¶
Типы сообщений включают различные уровни, такие как ошибка, информация, предупреждение, и другие. Также добавляются сокращенные обозначения для некоторых ключевых типов, таких как "warn", "crit" или "emergency". Локализация осуществляется с использованием функции __.
Возвращает:¶
| Text Only | |
|---|---|
Ассоциативный массив, где ключи — идентификаторы типов сообщений, а значения — локализованные описания.
getLogs¶
| Text Only | |
|---|---|
Краткое содержание¶
Получает текущий статус логирования.
Описание¶
Метод инициализирует необходимые настройки через self::init(), если они еще не были установлены, и устанавливает значение self::$logs, если оно не было задано. Значение берется из настроек, полученных через DataManager::getConfig("maharder").
Ошибки:¶
| Тип | Описание |
|---|---|
| \RuntimeException|\JsonException | Если DataManager::getConfig() выбрасывает исключение (например, при ошибке чтения конфигурации). |
| \Exception | Если возникнут ошибки во время инициализации (в методе init()). |
Возвращает:¶
| Text Only | |
|---|---|
Возвращает текущее состояние логирования.
getTelegramBot¶
| Text Only | |
|---|---|
Краткое содержание¶
Возвращает идентификатор Telegram-бота.
Описание¶
Метод возвращает текущее значение идентификатора Telegram-бота, хранящегося в статическом свойстве $telegram_bot.
Ошибки:¶
| Тип | Описание |
|---|---|
| \RuntimeException | Если идентификатор Telegram-бота не установлен (равен null). |
Возвращает:¶
| Text Only | |
|---|---|
Идентификатор Telegram-бота.
getTelegramChannel¶
| Text Only | |
|---|---|
Краткое содержание¶
Возвращает идентификатор Telegram-канала.
Описание¶
Метод возвращает идентификатор канала в различных форматах:
- Если канал настроен, он может быть представлен числом (целочисленным идентификатором) или строкой (например, в виде alias).
- Если канал отсутствует, метод вернет null.
Возвращает:¶
| Text Only | |
|---|---|
Возвращает идентификатор Telegram-канала в виде числа, строки или null, если канал не настроен.
getTelegramType¶
| Text Only | |
|---|---|
Краткое содержание¶
Возвращает тип Telegram в зависимости от установленного значения.
Описание¶
Если свойство $telegram_type не задано (null или пустое значение), возвращает значение по умолчанию "all".
Возвращает:¶
| Text Only | |
|---|---|
Тип Telegram. Может возвращать либо значение $telegram_type, либо строку "all" в качестве значения по умолчанию.
init¶
| Text Only | |
|---|---|
Краткое содержание¶
Инициализирует настройки для логирования. Функция настраивает параметры телеграм-логирования, базы данных для логов и другие параметры, используя данные конфигурации. Флаг initialized предотвращает повторную инициализацию.
Ошибки:¶
| Тип | Описание |
|---|---|
| \JsonException | Исключение выбрасывается, если манипуляции с JSON в процессе получения данных конфигурации или установки параметров окажутся некорректными. |
Возвращает:¶
| Text Only | |
|---|---|
isDbLogs¶
| Text Only | |
|---|---|
Краткое содержание¶
Проверяет, включены ли логирования в базе данных.
Описание¶
Если состояние логов в базе данных еще не было установлено, метод загружает конфигурацию из DataManager и устанавливает значение на основании параметра logs_db в конфигурации. Если параметр отсутствует, логирование в БД считается выключенным по умолчанию.
Ошибки:¶
| Тип | Описание |
|---|---|
| \RuntimeException|\JsonException | Если конфигурация приложения не может быть получена (зависит от реализации DataManager). |
Возвращает:¶
| Text Only | |
|---|---|
Возвращает true, если логирование в базе данных включено, иначе false.
isTelegramSend¶
| Text Only | |
|---|---|
Краткое содержание¶
Проверяет, включена ли отправка логов через Telegram.
Описание¶
Если флаг $telegram_send еще не установлен (false) и есть логи (определяется методом getLogs()), функция загружает конфигурацию из DataManager и устанавливает флаг на основе значения опции logs_telegram. В противном случае отправка через Telegram отключается.
Ошибки:¶
| Тип | Описание |
|---|---|
| \RuntimeException|\JsonException | Если возникает ошибка при загрузке или обработке конфигурации из DataManager. |
Возвращает:¶
| Text Only | |
|---|---|
Возвращает true, если отправка логов через Telegram включена, или false, если отключена.
setDbLogs¶
| Text Only | |
|---|---|
Краткое содержание¶
Устанавливает логирование работы с базой данных.
Свойства:¶
| Название | Тип | По умолчанию |
|---|---|---|
| $db_logs | bool |
Возвращает:¶
| Text Only | |
|---|---|
setLogs¶
| Text Only | |
|---|---|
Краткое содержание¶
Устанавливает состояние логирования.
Описание¶
Если передано значение true, включается логирование. Если передано значение false, логирование выключается. Также поддерживается передача целочисленного значения, которое будет приведено к булевому типу.
Смотри так-же:¶
Свойства:¶
| Название | Тип | По умолчанию |
|---|---|---|
| $logs | bool|int |
Ошибки:¶
| Тип | Описание |
|---|---|
| \Exception | Если возникнут ошибки во время инициализации (в методе init()). |
Возвращает:¶
| Text Only | |
|---|---|
Функция не возвращает значения.
setTelegramBot¶
| Text Only | |
|---|---|
Краткое содержание¶
Устанавливает идентификатор или токен Telegram-бота.
Описание¶
Метод позволяет задать идентификатор или токен используемого Telegram-бота, если он используется в приложении. Для удаления текущего значения передайте null.
Свойства:¶
| Название | Тип | По умолчанию |
|---|---|---|
| $telegram_bot | string|null |
Возвращает:¶
| Text Only | |
|---|---|
setTelegramChannel¶
| Text Only | |
|---|---|
Краткое содержание¶
Устанавливает идентификатор или имя канала Telegram.
Описание¶
Эта функция задаёт значение статического свойства $telegram_channel, позволяя указать идентификатор канала, имя или установить значение в null, чтобы сбросить текущее состояние.
Свойства:¶
| Название | Тип | По умолчанию |
|---|---|---|
| $telegram_channel | int | string | null |
Возвращает:¶
| Text Only | |
|---|---|
setTelegramSend¶
| Text Only | |
|---|---|
Краткое содержание¶
Устанавливает флаг для отправки сообщений через Telegram.
Описание¶
Этот метод изменяет состояние статического свойства $telegram_send, которое указывает, должны ли сообщения отправляться через Telegram.
Свойства:¶
| Название | Тип | По умолчанию |
|---|---|---|
| $telegram_send | bool | false |
Возвращает:¶
| Text Only | |
|---|---|
Метод не возвращает значения.
setTelegramType¶
| Text Only | |
|---|---|
Краткое содержание¶
Устанавливает тип Telegram для текущего экземпляра.
Свойства:¶
| Название | Тип | По умолчанию |
|---|---|---|
| $telegram_type | string|null |
Возвращает:¶
| Text Only | |
|---|---|
createLogDirectory¶
| Text Only | |
|---|---|
Краткое содержание¶
Создает директорию для логов с учетом указанного сервиса, модуля и пути.
Описание¶
Функция вызывает метод DataManager::createDir для создания директории, а также дополнительно проверяет существование директории через is_dir().
Свойства:¶
| Название | Тип | По умолчанию |
|---|---|---|
| $service | string | |
| $module | string | |
| $path | string |
Ошибки:¶
| Тип | Описание |
|---|---|
| \Throwable | В случае ошибки при вызове DataManager::createDir могут быть выброшены исключения, которые логируются в системе. |
Возвращает:¶
| Text Only | |
|---|---|
Возвращает true, если директория была успешно создана или уже существует; false, если создание директории завершилось ошибкой.
dbLog¶
| Text Only | |
|---|---|
Краткое содержание¶
Логирует сообщение в базу данных, если включены настройки логирования в БД.
Описание¶
Функция инициализирует настройки логирования, проверяет, включено ли логирование в базу данных, создает объект лога, форматирует сообщение и сохраняет его в базу данных.
Свойства:¶
| Название | Тип | По умолчанию |
|---|---|---|
| $message | array | |
| $type | string |
Ошибки:¶
| Тип | Описание |
|---|---|
| \RuntimeException | Если не удается сохранить лог в базу данных. |
| \JsonException|\Throwable | При возникновении ошибок в процессе работы с JSON или других исключений. |
Возвращает:¶
| Text Only | |
|---|---|
fileLog¶
| Text Only | |
|---|---|
Краткое содержание¶
Логирование сообщений в файл.
Описание¶
Метод записывает переданное сообщение в указанный лог-файл, если включено логирование. Сообщение предварительно сериализуется перед записью.
Свойства:¶
| Название | Тип | По умолчанию |
|---|---|---|
| $file | string | |
| $message | mixed | |
| $level | int |
Ошибки:¶
| Тип | Описание |
|---|---|
| \JsonException | Генерируется, если в процессе инициализации (инициализация через self::init()) возникает ошибка, связанная с обработкой JSON (например, при работе с конфигурацией DataManager::getConfig()). |
Возвращает:¶
| Text Only | |
|---|---|
Функция ничего не возвращает.
formatMessage¶
| Text Only | |
|---|---|
Краткое содержание¶
Форматирует сообщение для отображения в виде строки.
Описание¶
Если сообщение передано в виде массива, функция преобразует его в строку, где каждый элемент массива будет представлен как отдельная строка, разделенная тегами <br />. В случае, если ключ является строкой, он будет выделен тегом <b>. Если сообщение уже является строкой, возвращает его без изменений.
Свойства:¶
| Название | Тип | По умолчанию |
|---|---|---|
| $message | string|array |
Ошибки:¶
| Тип | Описание |
|---|---|
| \InvalidArgumentException | Если входной параметр не является строкой или массивом (сценарий невозможен в данной реализации, но документация указывает на строгие ожидания типов). |
Возвращает:¶
| Text Only | |
|---|---|
Возвращает отформатированное сообщение в виде строки. Если входной параметр — строка, возвращается без изменений, если массив — объединяется в строку с использованием тега <br />.
getErrorNotification¶
| Text Only | |
|---|---|
Краткое содержание¶
Генерирует HTML-уведомление об ошибке для указанного модуля и функции.
Описание¶
Формирует содержимое уведомления с информацией о модуле, функции, типе ошибки, дате и времени, а также сообщением об ошибке.
Свойства:¶
| Название | Тип | По умолчанию |
|---|---|---|
| $service | string | |
| $functionName | string | |
| $type | string | |
| $dateTime | string | |
| $message | mixed |
Возвращает:¶
| Text Only | |
|---|---|
Возвращает сгенерированное HTML-уведомление с детализированной информацией об ошибке.
telegramLog¶
| Text Only | |
|---|---|
Краткое содержание¶
Отправляет лог-сообщение в Telegram.
Описание¶
Функция формирует и отправляет сообщение с логом в указанный Telegram-чат, проверяя настройки и типы логов, допустимые для отправки. Если отправка не удалась, сообщение об ошибке записывается в лог приложения.
Свойства:¶
| Название | Тип | По умолчанию |
|---|---|---|
| $message | array | |
| $type | string |
Ошибки:¶
| Тип | Описание |
|---|---|
| \RuntimeException | В случае ошибки HTTP-запроса или сбоя при работе с Telegram API. |
| \JsonException|\Throwable | При возникновении ошибок в процессе работы с JSON или других исключений. |
Возвращает:¶
| Text Only | |
|---|---|
Функция ничего не возвращает.