loguru support standout logging with json and csv (#2415)
support standout logging with json and csv Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This commit is contained in:
parent
f3df98a29c
commit
46f9f8c852
1 changed files with 51 additions and 37 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
|
|
@ -11,7 +12,7 @@ from rich.logging import RichHandler
|
||||||
VALID_LOG_LEVELS = ["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"]
|
VALID_LOG_LEVELS = ["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"]
|
||||||
|
|
||||||
|
|
||||||
def serialize(record):
|
def serialize_log(record):
|
||||||
subset = {
|
subset = {
|
||||||
"timestamp": record["time"].timestamp(),
|
"timestamp": record["time"].timestamp(),
|
||||||
"message": record["message"],
|
"message": record["message"],
|
||||||
|
|
@ -22,25 +23,38 @@ def serialize(record):
|
||||||
|
|
||||||
|
|
||||||
def patching(record):
|
def patching(record):
|
||||||
record["extra"]["serialized"] = serialize(record)
|
record["extra"]["serialized"] = serialize_log(record)
|
||||||
|
|
||||||
|
|
||||||
def configure(log_level: Optional[str] = None, log_file: Optional[Path] = None, disable: Optional[bool] = False):
|
def configure(
|
||||||
|
log_level: Optional[str] = None,
|
||||||
|
log_file: Optional[Path] = None,
|
||||||
|
disable: Optional[bool] = False,
|
||||||
|
log_env: Optional[str] = None,
|
||||||
|
):
|
||||||
if disable and log_level is None and log_file is None:
|
if disable and log_level is None and log_file is None:
|
||||||
logger.disable("langflow")
|
logger.disable("langflow")
|
||||||
if os.getenv("LANGFLOW_LOG_LEVEL", "").upper() in VALID_LOG_LEVELS and log_level is None:
|
if os.getenv("LANGFLOW_LOG_LEVEL", "").upper() in VALID_LOG_LEVELS and log_level is None:
|
||||||
log_level = os.getenv("LANGFLOW_LOG_LEVEL")
|
log_level = os.getenv("LANGFLOW_LOG_LEVEL")
|
||||||
if log_level is None:
|
if log_level is None:
|
||||||
log_level = "ERROR"
|
log_level = "ERROR"
|
||||||
|
|
||||||
|
if log_env is None:
|
||||||
|
log_env = os.getenv("LANGFLOW_LOG_ENV", "")
|
||||||
|
|
||||||
|
logger.remove() # Remove default handlers
|
||||||
|
logger.patch(patching)
|
||||||
|
if log_env.lower() == "container" or log_env.lower() == "container_json":
|
||||||
|
logger.add(sys.stdout, format="{message}", serialize=True)
|
||||||
|
elif log_env.lower() == "container_csv":
|
||||||
|
logger.add(sys.stdout, format="{time:YYYY-MM-DD HH:mm:ss.SSS} {level} {file} {line} {function} {message}")
|
||||||
|
else:
|
||||||
# Human-readable
|
# Human-readable
|
||||||
log_format = (
|
log_format = (
|
||||||
"<green>{time:YYYY-MM-DD HH:mm:ss}</green> - <level>"
|
"<green>{time:YYYY-MM-DD HH:mm:ss}</green> - <level>"
|
||||||
"{level: <8}</level> - {module} - <level>{message}</level>"
|
"{level: <8}</level> - {module} - <level>{message}</level>"
|
||||||
)
|
)
|
||||||
|
|
||||||
# log_format = log_format_dev if log_level.upper() == "DEBUG" else log_format_prod
|
|
||||||
logger.remove() # Remove default handlers
|
|
||||||
logger.patch(patching)
|
|
||||||
# Configure loguru to use RichHandler
|
# Configure loguru to use RichHandler
|
||||||
logger.configure(
|
logger.configure(
|
||||||
handlers=[
|
handlers=[
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue