diff --git a/src/backend/langflow/utils/logger.py b/src/backend/langflow/utils/logger.py
index deb0f75ca..b881a614c 100644
--- a/src/backend/langflow/utils/logger.py
+++ b/src/backend/langflow/utils/logger.py
@@ -1,30 +1,34 @@
-import logging
+from loguru import logger
from pathlib import Path
-
from rich.logging import RichHandler
-logger = logging.getLogger("langflow")
+def configure(log_level: str = "DEBUG", log_file: Path = None):
+ log_format = "{time:HH:mm:ss} - {level: <8} - {message}"
+ logger.remove() # Remove default handlers
-def configure(log_level: str = "DEBUG", log_file: Path = None): # type: ignore
- log_format = "%(asctime)s - %(levelname)s - %(message)s"
- log_level_value = getattr(logging, log_level.upper(), logging.INFO)
-
- logging.basicConfig(
- level=log_level_value,
- format=log_format,
- datefmt="[%X]",
- handlers=[RichHandler(rich_tracebacks=True)],
+ # Configure loguru to use RichHandler
+ logger.configure(
+ handlers=[
+ {
+ "sink": RichHandler(rich_tracebacks=True, markup=True),
+ "format": log_format,
+ "level": log_level,
+ }
+ ]
)
if log_file:
log_file = Path(log_file)
log_file.parent.mkdir(parents=True, exist_ok=True)
- file_handler = logging.FileHandler(log_file)
- file_handler.setFormatter(logging.Formatter(log_format))
- logger.addHandler(file_handler)
+ logger.add(
+ sink=str(log_file),
+ level=log_level,
+ format=log_format,
+ rotation="10 MB", # Log rotation based on file size
+ )
- logger.info(f"Logger set up with log level: {log_level_value}({log_level})")
+ logger.info(f"Logger set up with log level: {log_level}")
if log_file:
logger.info(f"Log file: {log_file}")