Files
Touchh/touchh/utils/log.py

59 lines
2.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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()
if log_level:
self.log_level = getattr(logging, log_level.upper(), getattr(logging, default_level, logging.INFO))
else:
self.log_level = 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