fix(logging): Ensure file logger is correctly initialized
This commit is contained in:
@@ -25,6 +25,7 @@ def setup_logging(run_id: str, db_manager: Optional[DatabaseManager] = None):
|
|||||||
"""Настраивает систему логирования проекта."""
|
"""Настраивает систему логирования проекта."""
|
||||||
# <CORE_LOGIC>
|
# <CORE_LOGIC>
|
||||||
log_format = '[%(asctime)s] [%(levelname)s] :: %(message)s'
|
log_format = '[%(asctime)s] [%(levelname)s] :: %(message)s'
|
||||||
|
handlers = []
|
||||||
|
|
||||||
# <ACTION name="create_log_directory">
|
# <ACTION name="create_log_directory">
|
||||||
# Создаем директорию для логов, если она не существует.
|
# Создаем директорию для логов, если она не существует.
|
||||||
@@ -34,35 +35,36 @@ def setup_logging(run_id: str, db_manager: Optional[DatabaseManager] = None):
|
|||||||
# <ACTION name="configure_file_handler">
|
# <ACTION name="configure_file_handler">
|
||||||
# Добавляем обработчик для записи логов в файл.
|
# Добавляем обработчик для записи логов в файл.
|
||||||
log_file_name = f"run_{run_id}.log"
|
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.setLevel(logging.INFO)
|
||||||
file_handler.setFormatter(logging.Formatter(log_format))
|
file_handler.setFormatter(logging.Formatter(log_format))
|
||||||
|
handlers.append(file_handler)
|
||||||
root_logger = logging.getLogger('')
|
|
||||||
root_logger.addHandler(file_handler)
|
|
||||||
# </ACTION>
|
# </ACTION>
|
||||||
|
|
||||||
logging.basicConfig(
|
|
||||||
level=logging.DEBUG,
|
|
||||||
format=log_format,
|
|
||||||
datefmt='%Y-%m-%d %H:%M:%S',
|
|
||||||
force=True # Перезаписывает любую существующую конфигурацию
|
|
||||||
)
|
|
||||||
|
|
||||||
# <DEPENDENCY name="settings.log_to_db" />
|
# <DEPENDENCY name="settings.log_to_db" />
|
||||||
if settings.log_to_db and db_manager:
|
if settings.log_to_db and db_manager:
|
||||||
# <ERROR_HANDLER>
|
# <ERROR_HANDLER>
|
||||||
try:
|
try:
|
||||||
root_logger = logging.getLogger('')
|
|
||||||
db_handler = DatabaseLogHandler(db_manager, run_id)
|
db_handler = DatabaseLogHandler(db_manager, run_id)
|
||||||
db_handler.setLevel(logging.DEBUG)
|
db_handler.setLevel(logging.DEBUG)
|
||||||
db_handler.setFormatter(logging.Formatter(log_format))
|
db_handler.setFormatter(logging.Formatter(log_format))
|
||||||
root_logger.addHandler(db_handler)
|
handlers.append(db_handler)
|
||||||
logging.info("Обработчик логов для записи в <20><>азу данных успешно добавлен.")
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.error(f"Не удалось инициализировать обработчик логов для БД: {e}")
|
# Логирование еще не настроено, используем print для этой критической ошибки
|
||||||
|
print(f"Не удалось инициализировать обработчик логов для БД: {e}")
|
||||||
# </ERROR_HANDLER>
|
# </ERROR_HANDLER>
|
||||||
|
|
||||||
|
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("Система логирования инициализирована.")
|
logging.info("Система логирования инициализирована.")
|
||||||
# </CORE_LOGIC>
|
# </CORE_LOGIC>
|
||||||
# <COHERENCE_CHECK status="PASSED" />
|
# <COHERENCE_CHECK status="PASSED" />
|
||||||
|
|||||||
12
src/main.py
12
src/main.py
@@ -7,8 +7,10 @@
|
|||||||
# <IMPORTS>
|
# <IMPORTS>
|
||||||
import sys
|
import sys
|
||||||
import logging
|
import logging
|
||||||
|
from datetime import datetime
|
||||||
from orchestrator import AppOrchestrator
|
from orchestrator import AppOrchestrator
|
||||||
from core.settings import settings
|
from core.settings import settings
|
||||||
|
from core.logging_config import setup_logging
|
||||||
# </IMPORTS>
|
# </IMPORTS>
|
||||||
|
|
||||||
# <CONTRACT for="main">
|
# <CONTRACT for="main">
|
||||||
@@ -20,17 +22,15 @@ from core.settings import settings
|
|||||||
# exceptions:
|
# exceptions:
|
||||||
# - "ValueError: при ошибках в конфигурации."
|
# - "ValueError: при ошибках в конфигурации."
|
||||||
# - "KeyboardInterrupt: при прерывании пользователем."
|
# - "KeyboardInterrupt: при прерывании пользователем."
|
||||||
# - "Exception: при любых других критических ошибках."
|
# - "Exception: при любых других критических ошибка<EFBFBD><EFBFBD>."
|
||||||
# </CONTRACT>
|
# </CONTRACT>
|
||||||
# <ENTRYPOINT name="main">
|
# <ENTRYPOINT name="main">
|
||||||
def main():
|
def main():
|
||||||
"""Точка входа в приложение."""
|
"""Точка входа в приложение."""
|
||||||
# <INIT>
|
# <INIT>
|
||||||
logging.basicConfig(
|
run_id = datetime.now().strftime("%Y%m%d-%H%M%S")
|
||||||
level=logging.INFO,
|
setup_logging(run_id=run_id)
|
||||||
format='[%(asctime)s] [%(levelname)s] %(name)s: %(message)s',
|
|
||||||
datefmt='%Y-%m-%d %H:%M:%S'
|
|
||||||
)
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
# </INIT>
|
# </INIT>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user