add loggin

This commit is contained in:
2025-09-07 13:45:11 -04:00
parent 87e05a363d
commit d3d7e268e5
2 changed files with 69 additions and 2 deletions
+1 -1
View File
@@ -1 +1 @@
0.0.12
0.0.13
+68 -1
View File
@@ -49,6 +49,8 @@ import json
import asyncio
import glob
import re
import logging
import logging.handlers
from pathlib import Path
from datetime import datetime, timezone, timedelta
from fastapi import FastAPI, HTTPException, BackgroundTasks, Request
@@ -67,9 +69,71 @@ import time
# Import TV helpers from your existing module
from media_date_cache import (
db_connect, apply_series, parse_imdb_from_path,
_log, _iso_now, SonarrClient
_log as _original_log, _iso_now, SonarrClient
)
# ---------------------------
# Enhanced logging with file support
# ---------------------------
# Global file logger
_file_logger = None
def _setup_file_logging():
"""Setup file logging for NFOGuard"""
global _file_logger
if _file_logger is not None:
return _file_logger
# Create logs directory
log_dir = Path("/app/data/logs")
log_dir.mkdir(parents=True, exist_ok=True)
# Setup rotating file handler
log_file = log_dir / "nfoguard.log"
_file_logger = logging.getLogger("NFOGuard")
_file_logger.setLevel(logging.DEBUG)
# Rotating file handler (10MB max, 5 backups)
file_handler = logging.handlers.RotatingFileHandler(
log_file, maxBytes=10*1024*1024, backupCount=5
)
# Detailed format for file logging
formatter = logging.Formatter(
'[%(asctime)s] %(levelname)s: %(message)s',
datefmt='%Y-%m-%dT%H:%M:%S+00:00'
)
file_handler.setFormatter(formatter)
_file_logger.addHandler(file_handler)
return _file_logger
def _log(level: str, msg: str):
"""Enhanced logging that writes to both console and file"""
# Call original log for console output
_original_log(level, msg)
# Also log to file
try:
file_logger = _setup_file_logging()
if level == "DEBUG":
file_logger.debug(msg)
elif level == "INFO":
file_logger.info(msg)
elif level == "WARNING":
file_logger.warning(msg)
elif level == "ERROR":
file_logger.error(msg)
else:
file_logger.info(f"{level}: {msg}")
except Exception as e:
# Don't let logging errors break the app
print(f"File logging error: {e}")
# Initialize file logging on startup
_setup_file_logging()
# ---------------------------
# Models
# ---------------------------
@@ -1085,6 +1149,9 @@ def apply_movie(movie_dir: Path, conn: sqlite3.Connection):
conn.commit()
_log("INFO", f"Processed movie: {movie_dir.name} (source={src_detail or 'unknown'}; preserved={preserve})")
# Add detailed logging for debugging with searchable format
_log("INFO", f"MOVIE_SUMMARY: imdb={imdb_id} title='{movie_dir.name}' dateadded={dateadded_iso} source={src_detail} preserved={preserve}")
# ---------------------------
# Batching