import logging from os import environ from structlog.processors import JSONRenderer, TimeStamper from structlog.dev import ConsoleRenderer import structlog if not structlog.is_configured(): if (env := environ.get('ENV_MODE')) and env == 'production': timestamper = TimeStamper(fmt="%Y-%m-%d %H:%M:%S", utc=True) renderer: JSONRenderer | ConsoleRenderer = JSONRenderer() else: timestamper = TimeStamper(fmt="%Y-%m-%d %H:%M:%S", utc=False) renderer = ConsoleRenderer() structlog.configure( processors=[ structlog.contextvars.merge_contextvars, structlog.processors.add_log_level, structlog.processors.StackInfoRenderer(), structlog.dev.set_exc_info, timestamper, renderer, ], wrapper_class=structlog.make_filtering_bound_logger(logging.NOTSET), context_class=dict, logger_factory=structlog.PrintLoggerFactory(), cache_logger_on_first_use=False ) log = structlog.get_logger()