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.
This commit is contained in:
Gabriel Luiz Freitas Almeida 2025-03-25 16:27:08 -03:00 committed by GitHub
commit bad36a8816
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -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: