41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
"""
|
|
Logging - 16 May 2025
|
|
Dev - colored console
|
|
Prod - structured JSON
|
|
"""
|
|
from __future__ import annotations
|
|
import logging, os, structlog
|
|
from core.settings import LOG_LEVEL, ENV
|
|
|
|
def init_logging() -> None:
|
|
log_level = getattr(logging, LOG_LEVEL.upper(), logging.INFO)
|
|
|
|
if ENV == "production":
|
|
processors = [
|
|
structlog.processors.TimeStamper(fmt="%Y-%m-%dT%H:%M:%S", utc=True),
|
|
structlog.processors.add_log_level,
|
|
_add_path,
|
|
structlog.processors.JSONRenderer(),
|
|
]
|
|
else:
|
|
|
|
processors = [
|
|
structlog.processors.TimeStamper(fmt="%H:%M:%S"),
|
|
structlog.processors.add_log_level,
|
|
structlog.dev.ConsoleRenderer(colors=True),
|
|
]
|
|
|
|
structlog.configure(
|
|
wrapper_class=structlog.make_filtering_bound_logger(log_level),
|
|
processors=processors,
|
|
)
|
|
|
|
logging.getLogger("sqlalchemy.engine").setLevel(logging.WARNING)
|
|
|
|
def _add_path(_, __, event_dict):
|
|
from quart import request
|
|
if request:
|
|
event_dict["path"] = request.path
|
|
return event_dict
|
|
|