removed configure_logging in favor of dsqls logging
This commit is contained in:
1 parent
5e935338bc
commit
ab4e2832d3
1 file changed
-51
@@ -1,17 +1,14 @@
|
|||||||
import logging
|
import logging
|
||||||
import json
|
import json
|
||||||
import os
|
|
||||||
import pathlib
|
import pathlib
|
||||||
from functools import cache
|
from functools import cache
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from logging.handlers import RotatingFileHandler
|
|
||||||
|
|
||||||
from monitor_utils.src.constants import (
|
from monitor_utils.src.constants import (
|
||||||
PROXIES_PATH,
|
PROXIES_PATH,
|
||||||
PROJECT_ROOT,
|
PROJECT_ROOT,
|
||||||
PRODUCTION_BOT_TOKEN,
|
PRODUCTION_BOT_TOKEN,
|
||||||
DEVELOPMENT_BOT_TOKEN,
|
DEVELOPMENT_BOT_TOKEN,
|
||||||
LOGGING_LEVEL,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
RESERVED = frozenset(logging.LogRecord("", 0, "", 0, "", (), None).__dict__)
|
RESERVED = frozenset(logging.LogRecord("", 0, "", 0, "", (), None).__dict__)
|
||||||
@@ -22,54 +19,6 @@ class DevelopmentMode(str, Enum):
|
|||||||
DEVELOPMENT = "DEVELOPMENT"
|
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:
|
def is_production(development_mode: DevelopmentMode) -> bool:
|
||||||
return development_mode == DevelopmentMode.PRODUCTION
|
return development_mode == DevelopmentMode.PRODUCTION
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user