first commit

This commit is contained in:
2025-11-21 13:38:02 -08:00
parent 1142b96b52
commit 04da8cd466
35 changed files with 73503 additions and 0 deletions

7
config/__init__.py Normal file
View File

@@ -0,0 +1,7 @@
"""
Configuration module for qBittorrent connection monitoring
"""
from .logging_config import setup_logging, configure_third_party_logging, ColoredFormatter
__all__ = ['setup_logging', 'configure_third_party_logging', 'ColoredFormatter']

Binary file not shown.

Binary file not shown.

83
config/logging_config.py Normal file
View File

@@ -0,0 +1,83 @@
import logging
import sys
from typing import Optional
class ColoredFormatter(logging.Formatter):
"""Custom formatter with colors for different log levels"""
# ANSI color codes
GREY = '\033[90m'
GREEN = '\033[92m'
YELLOW = '\033[93m'
RED = '\033[91m'
BOLD_RED = '\033[1;91m'
RESET = '\033[0m'
def format(self, record):
# Add color based on log level
if record.levelno == logging.DEBUG:
color = self.GREY
elif record.levelno == logging.INFO:
color = self.GREEN
elif record.levelno == logging.WARNING:
color = self.YELLOW
elif record.levelno in (logging.ERROR, logging.CRITICAL):
color = self.RED
else:
color = self.RESET
# Format the message with color
message = super().format(record)
return f"{color}{message}{self.RESET}"
def setup_logging(logger_name: str = __name__,
log_file: str = 'connection_monitor.log',
console_level: int = logging.DEBUG,
file_level: int = logging.DEBUG) -> logging.Logger:
"""
Configure logging with console and file handlers
Args:
logger_name: Name of the logger
log_file: Path to log file
console_level: Log level for console output
file_level: Log level for file output
Returns:
Configured logger instance
"""
logger = logging.getLogger(logger_name)
logger.setLevel(logging.DEBUG)
# Remove any existing handlers
logger.handlers = []
# Console handler with colors
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setLevel(console_level)
console_handler.setFormatter(ColoredFormatter(
'%(asctime)s - %(levelname)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
))
# File handler (no colors)
file_handler = logging.FileHandler(log_file)
file_handler.setLevel(file_level)
file_handler.setFormatter(logging.Formatter(
'%(asctime)s - %(levelname)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
))
# Add both handlers
logger.addHandler(console_handler)
logger.addHandler(file_handler)
return logger
def configure_third_party_logging():
"""Configure logging for third-party libraries"""
try:
logging.getLogger('urllib3').setLevel(logging.WARNING)
logging.getLogger('requests').setLevel(logging.WARNING)
except Exception as e:
logging.getLogger(__name__).error(f"Failed to configure additional logging: {e}")