From ebb36ac844204d9bfc726d9d17b66eceadda3cd8 Mon Sep 17 00:00:00 2001 From: lulzette Date: Wed, 1 May 2024 16:38:28 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B0=D1=81=D0=BF=D0=B8=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BA=D1=83=D1=81=D0=BE=D0=BA=20=D1=81=20=D0=BB=D0=BE?= =?UTF-8?q?=D0=B3=D0=B3=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=D0=BC,=20=D0=B2=D1=8B=D0=BA=D0=B8=D0=BD=D1=83=D1=82=D0=B0=20?= =?UTF-8?q?=D0=B1=D0=B8=D0=B1=D0=BB=D0=B8=D0=BE=D1=82=D0=B5=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=BF=D0=BE=D0=B4=D0=BA=D1=80=D0=B0=D1=88?= =?UTF-8?q?=D0=B8=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=BB=D0=BE=D0=B3=D0=BE?= =?UTF-8?q?=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements.txt | 3 +-- src/log_msg.py | 51 ++++++++++++++++++++++++++++++++++++++++++++++++ src/twitch-tgbot | 37 +++-------------------------------- 3 files changed, 55 insertions(+), 36 deletions(-) create mode 100644 src/log_msg.py diff --git a/requirements.txt b/requirements.txt index ab4351d..98e99f4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,2 @@ twitchAPI==2.5.7.1 -termcolor -pyTelegramBotAPI==4.8.0 \ No newline at end of file +pyTelegramBotAPI==4.8.0 diff --git a/src/log_msg.py b/src/log_msg.py new file mode 100644 index 0000000..06901da --- /dev/null +++ b/src/log_msg.py @@ -0,0 +1,51 @@ +import logging +from logging.handlers import TimedRotatingFileHandler +import sys +log_format = logging.Formatter('%(asctime)s %(levelname)s:%(message)s') +log_file = 'output.log' + +class CustomFormatter(logging.Formatter): + + grey = "\x1b[38;20m" + yellow = "\x1b[33;20m" + red = "\x1b[31;20m" + bold_red = "\x1b[31;1m" + reset = "\x1b[0m" + format = "%(asctime)s %(levelname)s - %(message)s" + + FORMATS = { + logging.DEBUG: grey + format + reset, + logging.INFO: grey + format + reset, + logging.WARNING: yellow + format + reset, + logging.ERROR: red + format + reset, + logging.CRITICAL: bold_red + format + reset + } + + def format(self, record): + log_fmt = self.FORMATS.get(record.levelno) + formatter = logging.Formatter(log_fmt) + return formatter.format(record) + +class MyLog: + + def __init__(self): + self.logger = logging.getLogger("main") + self.logger.setLevel(logging.DEBUG) + # Console logging + self.console = self.get_console_handler() + self.console.setFormatter(CustomFormatter()) + self.logger.addHandler(self.console) + + self.logger.addHandler(self.get_file_handler()) + self.logger.propagate = False + + def get_console_handler(self): + console_handler = logging.StreamHandler(sys.stdout) + console_handler.setFormatter(log_format) + return console_handler + + def get_file_handler(self): + file_handler = TimedRotatingFileHandler(log_file, when='midnight') + file_handler.setFormatter(log_format) + return file_handler + diff --git a/src/twitch-tgbot b/src/twitch-tgbot index fee310c..add3989 100755 --- a/src/twitch-tgbot +++ b/src/twitch-tgbot @@ -2,11 +2,8 @@ import time import os import sys -import logging from twitchAPI.twitch import Twitch -from logging.handlers import TimedRotatingFileHandler -from termcolor import colored import telebot from telebot.types import InputFile from telebot import types @@ -15,9 +12,7 @@ import requests import shutil from parse_config import Config, load_config - -log_format = logging.Formatter('%(asctime)s %(levelname)s:%(message)s') -log_file = 'output.log' +from log_msg import MyLog def stream_message_worker(data: dict): @@ -118,12 +113,7 @@ def check_alive(): # Получаем инфо о стримере, если не получается, выходим с ошибкой resolved_id = twitch_client.get_users(logins=[config_python.streamer]) if not resolved_id['data']: - log.error( - colored( - "Аккаунт " + config_python.streamer + " не найден", - 'red', - ) - ) + log.error("Аккаунт " + config_python.streamer + " не найден") # Достаем ID стримера из инфо user_id = resolved_id['data'][0]['id'] # Получаем стримы @@ -136,29 +126,8 @@ def check_alive(): no_stream_msg_worker() -def get_console_handler(): - console_handler = logging.StreamHandler(sys.stdout) - console_handler.setFormatter(log_format) - return console_handler - - -def get_file_handler(): - file_handler = TimedRotatingFileHandler(log_file, when='midnight') - file_handler.setFormatter(log_format) - return file_handler - - -def get_logger(logger_name): - logger = logging.getLogger(logger_name) - logger.setLevel(logging.DEBUG) - logger.addHandler(get_console_handler()) - logger.addHandler(get_file_handler()) - logger.propagate = False - return logger - - if __name__ == '__main__': - log = get_logger("main") + log = MyLog().logger log.info("Запущен") config_python = load_config() twitch_client = Twitch(config_python.app_id, config_python.app_secret)