suna/backend/utils/logger.py

41 lines
1.3 KiB
Python

import structlog, logging, os
ENV_MODE = os.getenv("ENV_MODE", "LOCAL")
# Set default logging level based on environment
if ENV_MODE.upper() == "PRODUCTION":
default_level = "DEBUG"
else:
default_level = "INFO"
LOGGING_LEVEL = logging.getLevelNamesMapping().get(
os.getenv("LOGGING_LEVEL", default_level).upper(),
logging.DEBUG if ENV_MODE.upper() == "PRODUCTION" else logging.INFO
)
renderer = [structlog.processors.JSONRenderer()]
# if ENV_MODE.lower() == "local".lower() or ENV_MODE.lower() == "staging".lower():
# renderer = [structlog.dev.ConsoleRenderer()]
structlog.configure(
processors=[
structlog.stdlib.add_log_level,
structlog.stdlib.PositionalArgumentsFormatter(),
structlog.processors.dict_tracebacks,
structlog.processors.CallsiteParameterAdder(
{
structlog.processors.CallsiteParameter.FILENAME,
structlog.processors.CallsiteParameter.FUNC_NAME,
structlog.processors.CallsiteParameter.LINENO,
}
),
structlog.processors.TimeStamper(fmt="iso"),
structlog.contextvars.merge_contextvars,
*renderer,
],
cache_logger_on_first_use=True,
wrapper_class=structlog.make_filtering_bound_logger(LOGGING_LEVEL),
)
logger: structlog.stdlib.BoundLogger = structlog.get_logger()