mirror of
https://github.com/maxdorninger/MediaManager.git
synced 2026-04-18 01:54:00 +02:00
This PR enables the ruff rule for return type annotations (ANN), and adds the ty package for type checking.
77 lines
2.4 KiB
Python
77 lines
2.4 KiB
Python
import logging
|
|
import os
|
|
import sys
|
|
from datetime import datetime, timezone
|
|
from logging.config import dictConfig
|
|
from pathlib import Path
|
|
from typing import override
|
|
|
|
from pythonjsonlogger.json import JsonFormatter
|
|
|
|
|
|
class ISOJsonFormatter(JsonFormatter):
|
|
@override
|
|
def formatTime(self, record: logging.LogRecord, datefmt: str | None = None) -> str:
|
|
dt = datetime.fromtimestamp(record.created, tz=timezone.utc)
|
|
return dt.isoformat(timespec="milliseconds").replace("+00:00", "Z")
|
|
|
|
|
|
LOG_LEVEL = os.getenv("MEDIAMANAGER_LOG_LEVEL", "INFO").upper()
|
|
LOG_FILE = Path(os.getenv("LOG_FILE", "/app/config/media_manager.log"))
|
|
LOGGING_CONFIG = {
|
|
"version": 1,
|
|
"disable_existing_loggers": False,
|
|
"formatters": {
|
|
"default": {
|
|
"format": "%(asctime)s - %(levelname)s - %(name)s - %(funcName)s(): %(message)s"
|
|
},
|
|
"json": {
|
|
"()": ISOJsonFormatter,
|
|
"format": "%(asctime)s %(levelname)s %(name)s %(message)s",
|
|
"rename_fields": {
|
|
"levelname": "level",
|
|
"asctime": "timestamp",
|
|
"name": "module",
|
|
},
|
|
},
|
|
},
|
|
"handlers": {
|
|
"console": {
|
|
"class": "logging.StreamHandler",
|
|
"formatter": "default",
|
|
"stream": sys.stdout,
|
|
},
|
|
"file": {
|
|
"class": "logging.handlers.RotatingFileHandler",
|
|
"formatter": "json",
|
|
"filename": str(LOG_FILE),
|
|
"maxBytes": 10485760,
|
|
"backupCount": 5,
|
|
"encoding": "utf-8",
|
|
},
|
|
},
|
|
"root": {
|
|
"level": LOG_LEVEL,
|
|
"handlers": ["console", "file"],
|
|
},
|
|
"loggers": {
|
|
"uvicorn": {"handlers": ["console", "file"], "level": "DEBUG"},
|
|
"uvicorn.access": {"handlers": ["console", "file"], "level": "DEBUG"},
|
|
"fastapi": {"handlers": ["console", "file"], "level": "DEBUG"},
|
|
},
|
|
}
|
|
|
|
|
|
def setup_logging() -> None:
|
|
dictConfig(LOGGING_CONFIG)
|
|
logging.basicConfig(
|
|
level=LOG_LEVEL,
|
|
format="%(asctime)s - %(levelname)s - %(name)s - %(funcName)s(): %(message)s",
|
|
stream=sys.stdout,
|
|
)
|
|
logging.getLogger("urllib3").setLevel(logging.WARNING)
|
|
logging.getLogger("requests").setLevel(logging.WARNING)
|
|
logging.getLogger("transmission_rpc").setLevel(logging.WARNING)
|
|
logging.getLogger("qbittorrentapi").setLevel(logging.WARNING)
|
|
logging.getLogger("sabnzbd_api").setLevel(logging.WARNING)
|