Python:DifferentScripts:LoggerTG

Материал из 8j0rn wiki

Очень удобный логер с разными уровнями, в случае ошибки или предупреждения оперативно сообщить на Телеграм, рутинную же информацию сохраняет в файл, если понадобится однажды для работы над ошибками.

import logging
import os
from dotenv import load_dotenv
from pathlib import Path
from logging.handlers import RotatingFileHandler
import tg_logger

# Загружаем переменные окружения из файла .env
dotenv_path = os.path.join(os.path.dirname(__file__), '.env')
if os.path.exists(dotenv_path):
    load_dotenv(dotenv_path)

# Telegram данные
token = os.getenv("TELEGRAM_BOT_TOKEN")
users = [os.getenv("TELEGRAM_CHAT_ID")]

# Получаем имя скрипта и его путь
script_path = Path(__file__).resolve()
script_name = os.path.splitext(os.path.basename(script_path))[0]
log_dir = script_path.parent
log_file = Path(str(log_dir) + "/" + script_name + ".log")

# Базовый логгер
logger = logging.getLogger(script_name)
logger.setLevel(logging.INFO)

# Настройка обработчика для сохранения в файл
file_handler = RotatingFileHandler(log_file, maxBytes=1024*1024, backupCount=10)
file_handler.setLevel(logging.INFO)
file_handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
logger.addHandler(file_handler)

#Настройка обработчика для отправки в TG
t_handler = tg_logger.setup(logger, token=token, users=users, tg_format="<b><u>%(name)s</u> : %(levelname)s</b>\n\n<code>%(message)s</code>")
t_handler.setLevel(logging.WARNING)
logger.addHandler(t_handler)

logger.info(f"Hello from tg_logger by {script_name}")
logger.warning(f"Test WARNING {script_name}")
#logger.error(f"Test ERROR {script_name}")