From cf52a7c0ad346ca36dad5664ed6133179e09f03f Mon Sep 17 00:00:00 2001 From: busya Date: Sun, 20 Jul 2025 08:35:40 +0300 Subject: [PATCH] fix(logging): Ensure file logger is correctly initialized --- src/core/logging_config.py | 34 ++++++++++++++++++---------------- src/main.py | 12 ++++++------ 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/src/core/logging_config.py b/src/core/logging_config.py index 6b3b2ca..9fe42fd 100644 --- a/src/core/logging_config.py +++ b/src/core/logging_config.py @@ -25,7 +25,8 @@ def setup_logging(run_id: str, db_manager: Optional[DatabaseManager] = None): """Настраивает систему логирования проекта.""" # log_format = '[%(asctime)s] [%(levelname)s] :: %(message)s' - + handlers = [] + # # Создаем директорию для логов, если она не существует. os.makedirs(settings.log_dir, exist_ok=True) @@ -34,35 +35,36 @@ def setup_logging(run_id: str, db_manager: Optional[DatabaseManager] = None): # # Добавляем обработчик для записи логов в файл. log_file_name = f"run_{run_id}.log" - file_handler = logging.FileHandler(settings.log_dir / log_file_name) + file_handler = logging.FileHandler(settings.log_dir / log_file_name, mode='w', encoding='utf-8') file_handler.setLevel(logging.INFO) file_handler.setFormatter(logging.Formatter(log_format)) - - root_logger = logging.getLogger('') - root_logger.addHandler(file_handler) + handlers.append(file_handler) # - - logging.basicConfig( - level=logging.DEBUG, - format=log_format, - datefmt='%Y-%m-%d %H:%M:%S', - force=True # Перезаписывает любую существующую конфигурацию - ) # if settings.log_to_db and db_manager: # try: - root_logger = logging.getLogger('') db_handler = DatabaseLogHandler(db_manager, run_id) db_handler.setLevel(logging.DEBUG) db_handler.setFormatter(logging.Formatter(log_format)) - root_logger.addHandler(db_handler) - logging.info("Обработчик логов для записи в ��азу данных успешно добавлен.") + handlers.append(db_handler) except Exception as e: - logging.error(f"Не удалось инициализировать обработчик логов для БД: {e}") + # Логирование еще не настроено, используем print для этой критической ошибки + print(f"Не удалось инициализировать обработчик логов для БД: {e}") # + logging.basicConfig( + level=logging.DEBUG, + format=log_format, + datefmt='%Y-%m-%d %H:%M:%S', + handlers=handlers, + force=True # Перезаписывает любую существующую конфигурацию + ) + + if any(isinstance(h, DatabaseLogHandler) for h in handlers): + logging.info("Обработчик логов для записи в базу данных успешно добавлен.") + logging.info("Система логирования инициализирована.") # # diff --git a/src/main.py b/src/main.py index 57b029f..7c1696c 100644 --- a/src/main.py +++ b/src/main.py @@ -7,8 +7,10 @@ # import sys import logging +from datetime import datetime from orchestrator import AppOrchestrator from core.settings import settings +from core.logging_config import setup_logging # # @@ -20,17 +22,15 @@ from core.settings import settings # exceptions: # - "ValueError: при ошибках в конфигурации." # - "KeyboardInterrupt: при прерывании пользователем." -# - "Exception: при любых других критических ошибках." +# - "Exception: при любых других критических ошибка��." # # def main(): """Точка входа в приложение.""" # - logging.basicConfig( - level=logging.INFO, - format='[%(asctime)s] [%(levelname)s] %(name)s: %(message)s', - datefmt='%Y-%m-%d %H:%M:%S' - ) + run_id = datetime.now().strftime("%Y%m%d-%H%M%S") + setup_logging(run_id=run_id) + logger = logging.getLogger(__name__) #