Files
LGBot/src/logger.py
2025-07-08 15:06:51 +03:00

58 lines
2.1 KiB
Python

import logging
import time
import os
class ColoredFormatter(logging.Formatter): # Цветные логи (для терминала)
LEVEL_COLORS = {
logging.INFO: '\033[92m',
logging.WARNING: '\033[93m',
logging.ERROR: '\033[91m',
logging.CRITICAL: '\033[91m'
}
LEVEL_NAMES = {
logging.INFO: "I",
logging.WARNING: "W",
logging.ERROR: "E",
logging.CRITICAL: "C"
}
def format(self, record):
local_time = time.localtime(record.created)
time_str = time.strftime("%H:%M:%S", local_time)
date_str = time.strftime("%d-%m-%Y", local_time)
level_name = self.LEVEL_NAMES.get(record.levelno, record.levelname)
message = f"[{time_str}] [{date_str}] [{level_name}] {record.getMessage()}"
color = self.LEVEL_COLORS.get(record.levelno, "")
return f"{color}{message}\033[0m" if color else message
class UncoloredFormatter(logging.Formatter): # Бесцветные логи (для bot.log)
def format(self, record):
local_time = time.localtime(record.created)
time_str = time.strftime("%H:%M:%S", local_time)
date_str = time.strftime("%d-%m-%Y", local_time)
level_name = ColoredFormatter.LEVEL_NAMES.get(
record.levelno,
record.levelname
)
return f"[{time_str}] [{date_str}] [{level_name}] {record.getMessage()}"
def setup_logging(): # Инициализирует систему логирования
# Создаем корневой логгер
logger = logging.getLogger()
logger.setLevel(logging.INFO)
# Проверяем, не настроен ли логгер ранее
if not logger.hasHandlers():
console_handler = logging.StreamHandler()
console_handler.setFormatter(ColoredFormatter())
# Сохраняем логи в файл
file_handler = logging.FileHandler("bot.log", encoding='utf-8')
file_handler.setFormatter(UncoloredFormatter())
logger.addHandler(console_handler)
logger.addHandler(file_handler)
return logger