diff --git a/monitor_utils/src/config.py b/monitor_utils/src/config.py index d283846..ca002d1 100644 --- a/monitor_utils/src/config.py +++ b/monitor_utils/src/config.py @@ -1,17 +1,14 @@ import logging import json -import os import pathlib from functools import cache from enum import Enum -from logging.handlers import RotatingFileHandler from monitor_utils.src.constants import ( PROXIES_PATH, PROJECT_ROOT, PRODUCTION_BOT_TOKEN, DEVELOPMENT_BOT_TOKEN, - LOGGING_LEVEL, ) RESERVED = frozenset(logging.LogRecord("", 0, "", 0, "", (), None).__dict__) @@ -22,54 +19,6 @@ class DevelopmentMode(str, Enum): DEVELOPMENT = "DEVELOPMENT" -class JSONFormatter(logging.Formatter): - def format(self, record: logging.LogRecord) -> str: - payload = { - "time": self.formatTime(record), - "level": record.levelname, - "logger": record.name, - "function": record.funcName, - "message": record.getMessage(), - } - for key, value in record.__dict__.items(): - if key not in RESERVED and not key.startswith("_"): - payload[key] = value - - if record.exc_info: - payload["exc"] = self.formatException(record.exc_info) - - return json.dumps(payload) - - -def configure_logging(monitor_name: str, log_dir: str = "/logs"): - os.makedirs(log_dir, exist_ok=True) - handler = logging.StreamHandler() - handler.setFormatter(JSONFormatter()) - - def inject_monitor(record: logging.LogRecord) -> bool: - record.monitor_name = monitor_name - return True - - handler.addFilter(inject_monitor) - - file_handler = RotatingFileHandler( - f"{log_dir}/{monitor_name}.jsonl", - maxBytes=10 * 1024 * 1024, - backupCount=5, - ) - file_handler.setFormatter(JSONFormatter()) - file_handler.addFilter(inject_monitor) - - root = logging.getLogger() - root.handlers.clear() - root.setLevel(LOGGING_LEVEL) - root.addHandler(handler) - root.addHandler(file_handler) - - logging.getLogger("aiohttp").setLevel(logging.WARNING) - logging.getLogger("pymongo").setLevel(logging.WARNING) - - def is_production(development_mode: DevelopmentMode) -> bool: return development_mode == DevelopmentMode.PRODUCTION