initial project version
This commit is contained in:
58
src/logger.py
Normal file
58
src/logger.py
Normal file
@@ -0,0 +1,58 @@
|
||||
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
|
Reference in New Issue
Block a user