31 lines
862 B
Python
31 lines
862 B
Python
from __future__ import annotations
|
|
|
|
import logging
|
|
from typing import Any
|
|
|
|
from app.core.redact import redact_any
|
|
|
|
|
|
class RedactFilter(logging.Filter):
|
|
def filter(self, record: logging.LogRecord) -> bool:
|
|
try:
|
|
message = record.getMessage()
|
|
record.msg = redact_any(message)
|
|
record.args = ()
|
|
for key, value in list(record.__dict__.items()):
|
|
if key.startswith("_"):
|
|
continue
|
|
record.__dict__[key] = redact_any(value)
|
|
except Exception:
|
|
pass
|
|
return True
|
|
|
|
|
|
def configure_logging(level: int = logging.INFO) -> None:
|
|
logging.basicConfig(level=level, format="%(levelname)s %(name)s %(message)s")
|
|
logging.getLogger().addFilter(RedactFilter())
|
|
|
|
|
|
def get_logger(name: str) -> logging.Logger:
|
|
return logging.getLogger(name)
|