Абстрактный класс: 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 | |
---|---|
Функция ничего не возвращает.