first commit
This commit is contained in:
7
config/__init__.py
Normal file
7
config/__init__.py
Normal 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']
|
||||
BIN
config/__pycache__/__init__.cpython-313.pyc
Normal file
BIN
config/__pycache__/__init__.cpython-313.pyc
Normal file
Binary file not shown.
BIN
config/__pycache__/logging_config.cpython-313.pyc
Normal file
BIN
config/__pycache__/logging_config.cpython-313.pyc
Normal file
Binary file not shown.
83
config/logging_config.py
Normal file
83
config/logging_config.py
Normal 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}")
|
||||
Reference in New Issue
Block a user