#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ LogBoard+ - Конфигурация логгера Автор: Сергей Антропов Сайт: https://devops.org.ru """ import logging import sys from typing import Optional import os from core.config import DEBUG_MODE def setup_logger(name: str = "logboard", level: Optional[str] = None) -> logging.Logger: """ Настраивает и возвращает логгер для приложения Args: name: Имя логгера level: Уровень логирования (DEBUG, INFO, WARNING, ERROR, CRITICAL) Returns: Настроенный логгер """ # Определяем уровень логирования if level is None: level = os.getenv("LOG_LEVEL", "DEBUG" if DEBUG_MODE else "INFO") # Создаем логгер logger = logging.getLogger(name) logger.setLevel(getattr(logging, level.upper())) # Очищаем существующие обработчики logger.handlers.clear() # Создаем форматтер formatter = logging.Formatter( fmt='%(asctime)s - %(name)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) # Создаем обработчик для консоли console_handler = logging.StreamHandler(sys.stdout) console_handler.setLevel(getattr(logging, level.upper())) console_handler.setFormatter(formatter) # Добавляем обработчик к логгеру logger.addHandler(console_handler) # Предотвращаем дублирование логов logger.propagate = False return logger # Создаем основной логгер приложения app_logger = setup_logger("logboard") # Создаем специализированные логгеры auth_logger = setup_logger("logboard.auth") docker_logger = setup_logger("logboard.docker") api_logger = setup_logger("logboard.api") websocket_logger = setup_logger("logboard.websocket")