From bad36a8816cfb6f436e47968aed444ccadc42fc8 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Tue, 25 Mar 2025 16:27:08 -0300 Subject: [PATCH] refactor: update logging to use logger.debug for consistency (#7258) refactor: replace rich print statements with logger.debug for improved logging consistency in main.py * Updated startup and shutdown messages to use logger.debug instead of rich print for better integration with logging practices. * Enhanced service initialization and flow loading messages to provide clearer debug information during application startup. --- src/backend/base/langflow/main.py | 41 ++++++++++++++----------------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/src/backend/base/langflow/main.py b/src/backend/base/langflow/main.py index 1b9152e77..f74ffaa35 100644 --- a/src/backend/base/langflow/main.py +++ b/src/backend/base/langflow/main.py @@ -20,7 +20,6 @@ from loguru import logger from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor from pydantic import PydanticDeprecatedSince20 from pydantic_core import PydanticSerializationError -from rich import print as rprint from starlette.middleware.base import BaseHTTPMiddleware, RequestResponseEndpoint from langflow.api import health_check_router, log_router, router @@ -118,58 +117,58 @@ def get_lifespan(*, fix_migration=False, version=None): # Startup message if version: - rprint(f"[bold green]Starting Langflow v{version}...[/bold green]") + logger.debug(f"Starting Langflow v{version}...") else: - rprint("[bold green]Starting Langflow...[/bold green]") + logger.debug("Starting Langflow...") temp_dirs: list[TemporaryDirectory] = [] sync_flows_from_fs_task = None try: start_time = asyncio.get_event_loop().time() - rprint("[bold blue]Initializing services[/bold blue]") + logger.debug("Initializing services") await initialize_services(fix_migration=fix_migration) - rprint(f"✓ Services initialized in {asyncio.get_event_loop().time() - start_time:.2f}s") + logger.debug(f"Services initialized in {asyncio.get_event_loop().time() - start_time:.2f}s") current_time = asyncio.get_event_loop().time() - rprint("[bold blue]Setting up LLM caching[/bold blue]") + logger.debug("Setting up LLM caching") setup_llm_caching() - rprint(f"✓ LLM caching setup in {asyncio.get_event_loop().time() - current_time:.2f}s") + logger.debug(f"LLM caching setup in {asyncio.get_event_loop().time() - current_time:.2f}s") current_time = asyncio.get_event_loop().time() - rprint("[bold blue]Initializing super user[/bold blue]") + logger.debug("Initializing super user") await initialize_super_user_if_needed() - rprint(f"✓ Super user initialized in {asyncio.get_event_loop().time() - current_time:.2f}s") + logger.debug(f"Super user initialized in {asyncio.get_event_loop().time() - current_time:.2f}s") current_time = asyncio.get_event_loop().time() - rprint("[bold blue]Loading bundles[/bold blue]") + logger.debug("Loading bundles") temp_dirs, bundles_components_paths = await load_bundles_with_error_handling() get_settings_service().settings.components_path.extend(bundles_components_paths) - rprint(f"✓ Bundles loaded in {asyncio.get_event_loop().time() - current_time:.2f}s") + logger.debug(f"Bundles loaded in {asyncio.get_event_loop().time() - current_time:.2f}s") current_time = asyncio.get_event_loop().time() - rprint("[bold blue]Caching types[/bold blue]") + logger.debug("Caching types") all_types_dict = await get_and_cache_all_types_dict(get_settings_service()) - rprint(f"✓ Types cached in {asyncio.get_event_loop().time() - current_time:.2f}s") + logger.debug(f"Types cached in {asyncio.get_event_loop().time() - current_time:.2f}s") current_time = asyncio.get_event_loop().time() - rprint("[bold blue]Creating/updating starter projects[/bold blue]") + logger.debug("Creating/updating starter projects") await create_or_update_starter_projects(all_types_dict) - rprint(f"✓ Starter projects updated in {asyncio.get_event_loop().time() - current_time:.2f}s") + logger.debug(f"Starter projects updated in {asyncio.get_event_loop().time() - current_time:.2f}s") telemetry_service.start() current_time = asyncio.get_event_loop().time() - rprint("[bold blue]Loading flows[/bold blue]") + logger.debug("Loading flows") await load_flows_from_directory() sync_flows_from_fs_task = asyncio.create_task(sync_flows_from_fs()) queue_service = get_queue_service() if not queue_service.is_started(): # Start if not already started queue_service.start() - rprint(f"✓ Flows loaded in {asyncio.get_event_loop().time() - current_time:.2f}s") + logger.debug(f"Flows loaded in {asyncio.get_event_loop().time() - current_time:.2f}s") total_time = asyncio.get_event_loop().time() - start_time - rprint(f"[bold green]✓ Total initialization time: {total_time:.2f}s[/bold green]") + logger.debug(f"Total initialization time: {total_time:.2f}s") yield except Exception as exc: @@ -187,7 +186,7 @@ def get_lifespan(*, fix_migration=False, version=None): temp_dir_cleanups = [asyncio.to_thread(temp_dir.cleanup) for temp_dir in temp_dirs] await asyncio.gather(*temp_dir_cleanups) # Final message - rprint("[bold red]Langflow shutdown complete[/bold red]") + logger.debug("Langflow shutdown complete") return lifespan @@ -197,8 +196,6 @@ def create_app(): from langflow.utils.version import get_version_info __version__ = get_version_info()["version"] - - rprint("configuring") configure() lifespan = get_lifespan(version=__version__) app = FastAPI(lifespan=lifespan, title="Langflow", version=__version__) @@ -268,7 +265,7 @@ def create_app(): # set here for create_app() entry point prome_port = int(prome_port_str) if prome_port > 0 or prome_port < MAX_PORT: - rprint(f"[bold green]Starting Prometheus server on port {prome_port}...[/bold green]") + logger.debug(f"Starting Prometheus server on port {prome_port}...") settings.prometheus_enabled = True settings.prometheus_port = prome_port else: