From d98410f90c42f6758b47bd628f2b8bb32aa3247f Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Wed, 3 Apr 2024 15:45:46 -0300 Subject: [PATCH] Fix logging level and version display --- src/backend/base/langflow/__main__.py | 10 +++++----- src/backend/base/langflow/alembic/env.py | 12 +++++++----- .../base/langflow/interface/toolkits/base.py | 17 ++++++++++------- src/backend/base/langflow/main.py | 2 +- src/backend/base/langflow/server.py | 3 +++ src/backend/base/langflow/utils/logger.py | 2 +- 6 files changed, 27 insertions(+), 19 deletions(-) diff --git a/src/backend/base/langflow/__main__.py b/src/backend/base/langflow/__main__.py index 6841ae1d1..34ed75f9b 100644 --- a/src/backend/base/langflow/__main__.py +++ b/src/backend/base/langflow/__main__.py @@ -149,13 +149,13 @@ def run( Run the Langflow. """ + configure(log_level=log_level, log_file=log_file) set_var_for_macos_issue() # override env variables with .env file if env_file: load_dotenv(env_file, override=True) - configure(log_level=log_level, log_file=log_file) update_settings( config, dev=dev, @@ -246,10 +246,10 @@ def get_free_port(port): def print_banner(host, port): - # console = Console() + from langflow.version import __version__ word = "Langflow" - colors = ["#3300cc"] + colors = ["#6e42f5"] styled_word = "" @@ -259,7 +259,7 @@ def print_banner(host, port): # Title with emojis and gradient text title = ( - f"[bold]Welcome to :chains: {styled_word} [/bold]\n\n" + f"[bold]Welcome to :chains: {styled_word} v{__version__}[/bold]\n" f"Access [link=http://{host}:{port}]http://{host}:{port}[/link]" ) info_text = ( @@ -307,7 +307,7 @@ def run_langflow(host, port, log_level, options, app): def superuser( username: str = typer.Option(..., prompt=True, help="Username for the superuser."), password: str = typer.Option(..., prompt=True, hide_input=True, help="Password for the superuser."), - log_level: str = typer.Option("critical", help="Logging level.", envvar="LANGFLOW_LOG_LEVEL"), + log_level: str = typer.Option("error", help="Logging level.", envvar="LANGFLOW_LOG_LEVEL"), ): """ Create a superuser. diff --git a/src/backend/base/langflow/alembic/env.py b/src/backend/base/langflow/alembic/env.py index 495cbb061..7400906c8 100644 --- a/src/backend/base/langflow/alembic/env.py +++ b/src/backend/base/langflow/alembic/env.py @@ -1,4 +1,5 @@ import os +import warnings from logging.config import fileConfig from alembic import context @@ -82,11 +83,12 @@ def run_migrations_online() -> None: prefix="sqlalchemy.", poolclass=pool.NullPool, ) - with connectable.connect() as connection: - context.configure(connection=connection, target_metadata=target_metadata, render_as_batch=True) - - with context.begin_transaction(): - context.run_migrations() + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + with connectable.connect() as connection: + context.configure(connection=connection, target_metadata=target_metadata, render_as_batch=True) + with context.begin_transaction(): + context.run_migrations() if context.is_offline_mode(): diff --git a/src/backend/base/langflow/interface/toolkits/base.py b/src/backend/base/langflow/interface/toolkits/base.py index 9ff3ad045..efcfefaa4 100644 --- a/src/backend/base/langflow/interface/toolkits/base.py +++ b/src/backend/base/langflow/interface/toolkits/base.py @@ -1,3 +1,4 @@ +import warnings from typing import Callable, Dict, List, Optional from langchain.agents import agent_toolkits @@ -29,13 +30,15 @@ class ToolkitCreator(LangChainTypeCreator): @property def type_to_loader_dict(self) -> Dict: if self.type_dict is None: - settings_service = get_settings_service() - self.type_dict = { - toolkit_name: import_class(f"langchain.agents.agent_toolkits.{toolkit_name}") - # if toolkit_name is not lower case it is a class - for toolkit_name in agent_toolkits.__all__ - if not toolkit_name.islower() and toolkit_name in settings_service.settings.TOOLKITS - } + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + settings_service = get_settings_service() + self.type_dict = { + toolkit_name: import_class(f"langchain.agents.agent_toolkits.{toolkit_name}") + # if toolkit_name is not lower case it is a class + for toolkit_name in agent_toolkits.__all__ + if not toolkit_name.islower() and toolkit_name in settings_service.settings.TOOLKITS + } return self.type_dict diff --git a/src/backend/base/langflow/main.py b/src/backend/base/langflow/main.py index f628ffb9c..9ed6e2984 100644 --- a/src/backend/base/langflow/main.py +++ b/src/backend/base/langflow/main.py @@ -130,7 +130,7 @@ if __name__ == "__main__": host="127.0.0.1", port=7860, workers=get_number_of_workers(), - log_level="debug", + log_level="error", reload=True, loop="asyncio", ) diff --git a/src/backend/base/langflow/server.py b/src/backend/base/langflow/server.py index 8451a9d08..b7e86934d 100644 --- a/src/backend/base/langflow/server.py +++ b/src/backend/base/langflow/server.py @@ -1,3 +1,5 @@ +import os + from gunicorn.app.base import BaseApplication # type: ignore from uvicorn.workers import UvicornWorker @@ -11,6 +13,7 @@ class LangflowApplication(BaseApplication): self.options = options or {} self.options["worker_class"] = "langflow.server.LangflowUvicornWorker" + self.options["loglevel"] = os.getenv("LANGFLOW_LOG_LEVEL", "error").lower() self.application = app super().__init__() diff --git a/src/backend/base/langflow/utils/logger.py b/src/backend/base/langflow/utils/logger.py index 5d9ec8406..d92bdb0e1 100644 --- a/src/backend/base/langflow/utils/logger.py +++ b/src/backend/base/langflow/utils/logger.py @@ -28,7 +28,7 @@ def configure(log_level: Optional[str] = None, log_file: Optional[Path] = None): if os.getenv("LANGFLOW_LOG_LEVEL", "").upper() in VALID_LOG_LEVELS and log_level is None: log_level = os.getenv("LANGFLOW_LOG_LEVEL") if log_level is None: - log_level = "INFO" + log_level = "ERROR" # Human-readable log_format = ( "{time:YYYY-MM-DD HH:mm:ss} - "