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