add loggin
This commit is contained in:
+68
-1
@@ -49,6 +49,8 @@ import json
|
|||||||
import asyncio
|
import asyncio
|
||||||
import glob
|
import glob
|
||||||
import re
|
import re
|
||||||
|
import logging
|
||||||
|
import logging.handlers
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from datetime import datetime, timezone, timedelta
|
from datetime import datetime, timezone, timedelta
|
||||||
from fastapi import FastAPI, HTTPException, BackgroundTasks, Request
|
from fastapi import FastAPI, HTTPException, BackgroundTasks, Request
|
||||||
@@ -67,9 +69,71 @@ import time
|
|||||||
# Import TV helpers from your existing module
|
# Import TV helpers from your existing module
|
||||||
from media_date_cache import (
|
from media_date_cache import (
|
||||||
db_connect, apply_series, parse_imdb_from_path,
|
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
|
# Models
|
||||||
# ---------------------------
|
# ---------------------------
|
||||||
@@ -1086,6 +1150,9 @@ def apply_movie(movie_dir: Path, conn: sqlite3.Connection):
|
|||||||
conn.commit()
|
conn.commit()
|
||||||
_log("INFO", f"Processed movie: {movie_dir.name} (source={src_detail or 'unknown'}; preserved={preserve})")
|
_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
|
# Batching
|
||||||
# ---------------------------
|
# ---------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user