From 9d78cebdd4bdef9c05abd8d511cec0d22e6bb56a Mon Sep 17 00:00:00 2001 From: Whyverum Date: Wed, 18 Dec 2024 07:17:04 +0700 Subject: [PATCH] =?UTF-8?q?=D0=9B=D0=BE=D0=B3=D0=B3=D0=B5=D1=80=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BotLibrary/library/logger.py | 90 ++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 BotLibrary/library/logger.py diff --git a/BotLibrary/library/logger.py b/BotLibrary/library/logger.py new file mode 100644 index 0000000..e69a2a7 --- /dev/null +++ b/BotLibrary/library/logger.py @@ -0,0 +1,90 @@ +# BotLibrary/library/logger.py +# Создание логгеров и подключение функций логирования в файлы + +import sys +from loguru import logger +from config import ImportantPath, LogsSet +from ..analitics.message_to_file import write_message_to_file +from ..analitics.user_data_to_file import write_user_info_to_file + +# Настройка экспорта модулей и логирования +__all__ = ("logger", "setup_logger", "cmd_logginger", "error_cmd_logginger", + "logginger", "common_msg_logginger", ) + + +# Создание обычного логгера + логгер в файл +async def setup_logger(): + logger.remove() # Удаляем все логгеры + + # Пустой логгер для записи отступов в файл уровня TRACE + logger.add(ImportantPath.log_file, + rotation=LogsSet.max_size, + format="\n\n\n", + backtrace=True, + diagnose=True, + level="TRACE", + filter=lambda record: record["level"].name == "TRACE") + logger.trace("") + + # Логгер для вывода в консоль и файл с уровнем INFO + logger.add(sys.stderr, + colorize=True, + format=LogsSet.info_text, + level="INFO", + filter=lambda record: record["level"].name == "INFO") + logger.add(ImportantPath.log_file, + rotation=LogsSet.max_size, + format=LogsSet.info_text, + backtrace=True, + diagnose=True, + level="INFO", + filter=lambda record: record["level"].name == "INFO") + + # Логгер для вывода в консоль и файл с уровнем ERROR + logger.add(sys.stderr, + colorize=True, + format=LogsSet.error_text, + level="ERROR", + filter=lambda record: record["level"].name == "ERROR") + logger.add(ImportantPath.log_error_file, + rotation=LogsSet.max_size, + format=LogsSet.error_text, + backtrace=True, + diagnose=True, + level="ERROR", + filter=lambda record: record["level"].name == "ERROR") + return f"Логгеры - подключены!" + + +# Запись сообщения в файл и информации о пользователи +async def logginger(message): + write_user_info_to_file(message.from_user) + await write_message_to_file(message) + return f"Сообщение и информация о пользователи - успешно записаны!" + + +# Создание функции логирования на обычные сообщения +async def common_msg_logginger(message, name, message_type, log_type): + # Проверка на наличие текста и его типа + if message.text is None: + logger.bind(log_type=log_type, user=f"@{message.from_user.username}").info( + f"Получено сообщение из ({name}) : {message_type}") + else: + logger.bind(log_type=log_type, user=f"@{message.from_user.username}").info( + f"Получено сообщение из ({name}) : {message.text}") + return f"Логгер на обычный сообщения - успешно активирован" + + +# Специальный логгер для команд. Вывод в консоль, файл и запись информации о пользователи +async def cmd_logginger(message, log_type, text): + await logginger(message) + logger.bind(log_type=log_type, user=f"@{message.from_user.username}").info(text) + return f"Логгер на команду - успешно активирован" + + +# Специальный логгер для ошибок с командами. Вывод в консоль, файл и запись информации о пользователи +async def error_cmd_logginger(message, log_type, e): + text_error = f"Ошибка при использовании команды /{log_type.lower()}: {str(e)}\n" + await logginger(message) + logger.bind(log_type=log_type, user=f"@{message.from_user.username}").error(text_error) + return text_error