logger refactor
This commit is contained in:
55
touchh/utils/log.py
Normal file
55
touchh/utils/log.py
Normal file
@@ -0,0 +1,55 @@
|
||||
import logging
|
||||
import os
|
||||
from dotenv import load_dotenv
|
||||
|
||||
# Загрузка переменных из .env
|
||||
load_dotenv()
|
||||
|
||||
class CustomLogger:
|
||||
"""
|
||||
Универсальный логгер для использования в проекте.
|
||||
"""
|
||||
|
||||
def __init__(self, name, log_level=None):
|
||||
"""
|
||||
Инициализирует логгер.
|
||||
|
||||
:param name: Имя логгера (обычно имя функции или класса)
|
||||
:param log_level: Уровень логирования (по умолчанию из .env)
|
||||
"""
|
||||
self.logger = logging.getLogger(name)
|
||||
|
||||
# Уровень логирования по умолчанию из .env
|
||||
default_level = os.getenv("LOG_LEVEL", "INFO").upper()
|
||||
self.log_level = getattr(logging, log_level.upper(), getattr(logging, default_level, logging.INFO))
|
||||
|
||||
self.setup_logger()
|
||||
|
||||
def setup_logger(self):
|
||||
"""
|
||||
Настраивает логгер с обработчиком и форматом.
|
||||
"""
|
||||
self.logger.setLevel(self.log_level)
|
||||
|
||||
# Удаляем старые обработчики, чтобы избежать дублирования
|
||||
if self.logger.hasHandlers():
|
||||
self.logger.handlers.clear()
|
||||
|
||||
# Добавляем обработчик для файла
|
||||
file_handler = logging.FileHandler("project.log")
|
||||
file_handler.setFormatter(logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s"))
|
||||
file_handler.setLevel(self.log_level)
|
||||
|
||||
# Добавляем обработчик для консоли
|
||||
console_handler = logging.StreamHandler()
|
||||
console_handler.setFormatter(logging.Formatter("%(name)s - %(levelname)s - %(message)s"))
|
||||
console_handler.setLevel(self.log_level)
|
||||
|
||||
self.logger.addHandler(file_handler)
|
||||
self.logger.addHandler(console_handler)
|
||||
|
||||
def get_logger(self):
|
||||
"""
|
||||
Возвращает настроенный логгер.
|
||||
"""
|
||||
return self.logger
|
||||
Reference in New Issue
Block a user