Refactor: Comprehensive logging level review and cleanup
Additional logs moved to DEBUG level: - Settings and configuration operations (loaded/saved settings, schedule config) - API request details (PATCH/POST requests, token caching) - Internal operations (frontend refresh, WebSocket updates) - Pagination details (reached last page messages for groups/streams) - Schedule syncing and viewing operations - Channel database reloading in fuzzy matcher These changes ensure that: - INFO level shows only user-facing events and important state changes - DEBUG level contains detailed operational and internal information - Logs are consistent across all actions (preview_changes, add_streams, etc.) - Cleaner log output for production use while maintaining debuggability Benefits: - Reduced log noise in production environments - Easier troubleshooting with DEBUG level when needed - Consistent logging patterns across the entire codebase - Better separation between user-facing and internal operations
This commit is contained in:
@@ -205,7 +205,7 @@ class FuzzyMatcher:
|
|||||||
self.logger.warning(f"No channel database files found to load")
|
self.logger.warning(f"No channel database files found to load")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
self.logger.info(f"Loading {len(channel_files)} channel database file(s): {[os.path.basename(f) for f in channel_files]}")
|
self.logger.debug(f"Loading {len(channel_files)} channel database file(s): {[os.path.basename(f) for f in channel_files]}")
|
||||||
|
|
||||||
total_broadcast = 0
|
total_broadcast = 0
|
||||||
total_premium = 0
|
total_premium = 0
|
||||||
|
|||||||
@@ -387,7 +387,7 @@ class Plugin:
|
|||||||
if os.path.exists(self.settings_file):
|
if os.path.exists(self.settings_file):
|
||||||
with open(self.settings_file, 'r') as f:
|
with open(self.settings_file, 'r') as f:
|
||||||
self.saved_settings = json.load(f)
|
self.saved_settings = json.load(f)
|
||||||
LOGGER.info("[Stream-Mapparr] Loaded saved settings")
|
LOGGER.debug("[Stream-Mapparr] Loaded saved settings")
|
||||||
# Start background scheduler with loaded settings
|
# Start background scheduler with loaded settings
|
||||||
self._start_background_scheduler(self.saved_settings)
|
self._start_background_scheduler(self.saved_settings)
|
||||||
else:
|
else:
|
||||||
@@ -411,7 +411,7 @@ class Plugin:
|
|||||||
try:
|
try:
|
||||||
scheduled_times_str = settings.get("scheduled_times") or ""
|
scheduled_times_str = settings.get("scheduled_times") or ""
|
||||||
scheduled_times_str = scheduled_times_str.strip() if scheduled_times_str else ""
|
scheduled_times_str = scheduled_times_str.strip() if scheduled_times_str else ""
|
||||||
logger.info(f"[Stream-Mapparr] Update Schedule - scheduled_times value: '{scheduled_times_str}'")
|
logger.debug(f"[Stream-Mapparr] Update Schedule - scheduled_times value: '{scheduled_times_str}'")
|
||||||
|
|
||||||
# Save settings to disk
|
# Save settings to disk
|
||||||
self._save_settings(settings)
|
self._save_settings(settings)
|
||||||
@@ -738,7 +738,7 @@ class Plugin:
|
|||||||
def get_or_refresh_api_token(self, settings, logger):
|
def get_or_refresh_api_token(self, settings, logger):
|
||||||
"""Get API token from cache or refresh if expired."""
|
"""Get API token from cache or refresh if expired."""
|
||||||
if self.api_token and self.token_expiration and self.token_expiration > datetime.now():
|
if self.api_token and self.token_expiration and self.token_expiration > datetime.now():
|
||||||
logger.info("[Stream-Mapparr] Using cached API token.")
|
logger.debug("[Stream-Mapparr] Using cached API token.")
|
||||||
return self.api_token, None
|
return self.api_token, None
|
||||||
|
|
||||||
logger.debug("[Stream-Mapparr] API token is expired or not found, getting a new one.")
|
logger.debug("[Stream-Mapparr] API token is expired or not found, getting a new one.")
|
||||||
@@ -869,7 +869,7 @@ class Plugin:
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
if limiter: limiter.wait()
|
if limiter: limiter.wait()
|
||||||
logger.info(f"[Stream-Mapparr] Making API PATCH request to: {endpoint}")
|
logger.debug(f"[Stream-Mapparr] Making API PATCH request to: {endpoint}")
|
||||||
response = requests.patch(url, headers=headers, json=payload, timeout=60)
|
response = requests.patch(url, headers=headers, json=payload, timeout=60)
|
||||||
|
|
||||||
# --- Smart Rate Limiter Logic ---
|
# --- Smart Rate Limiter Logic ---
|
||||||
@@ -917,7 +917,7 @@ class Plugin:
|
|||||||
headers = {'Authorization': f'Bearer {token}', 'Content-Type': 'application/json'}
|
headers = {'Authorization': f'Bearer {token}', 'Content-Type': 'application/json'}
|
||||||
|
|
||||||
try:
|
try:
|
||||||
logger.info(f"[Stream-Mapparr] Making API POST request to: {endpoint}")
|
logger.debug(f"[Stream-Mapparr] Making API POST request to: {endpoint}")
|
||||||
response = requests.post(url, headers=headers, json=payload, timeout=30)
|
response = requests.post(url, headers=headers, json=payload, timeout=30)
|
||||||
|
|
||||||
if response.status_code == 401:
|
if response.status_code == 401:
|
||||||
@@ -961,7 +961,7 @@ class Plugin:
|
|||||||
"message": "Channel visibility updated by Event Channel Managarr"
|
"message": "Channel visibility updated by Event Channel Managarr"
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
logger.info("[Stream-Mapparr] Frontend refresh triggered via WebSocket")
|
logger.debug("[Stream-Mapparr] Frontend refresh triggered via WebSocket")
|
||||||
return True
|
return True
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.warning(f"[Stream-Mapparr] Could not trigger frontend refresh: {e}")
|
logger.warning(f"[Stream-Mapparr] Could not trigger frontend refresh: {e}")
|
||||||
@@ -1518,7 +1518,7 @@ class Plugin:
|
|||||||
def save_settings(self, settings, context):
|
def save_settings(self, settings, context):
|
||||||
"""Save settings and sync schedules automatically"""
|
"""Save settings and sync schedules automatically"""
|
||||||
try:
|
try:
|
||||||
LOGGER.info(f"[Stream-Mapparr] Saving settings with keys: {list(settings.keys())}")
|
LOGGER.debug(f"[Stream-Mapparr] Saving settings with keys: {list(settings.keys())}")
|
||||||
|
|
||||||
# Get timezone and schedule settings
|
# Get timezone and schedule settings
|
||||||
user_timezone = settings.get("timezone") or "US/Central"
|
user_timezone = settings.get("timezone") or "US/Central"
|
||||||
@@ -1529,7 +1529,7 @@ class Plugin:
|
|||||||
cron_schedule = settings.get("schedule_cron") or ""
|
cron_schedule = settings.get("schedule_cron") or ""
|
||||||
cron_schedule = cron_schedule.strip() if cron_schedule else ""
|
cron_schedule = cron_schedule.strip() if cron_schedule else ""
|
||||||
|
|
||||||
LOGGER.info(f"[Stream-Mapparr] Schedule settings: enabled={enabled}, cron='{cron_schedule}', tz={user_timezone}")
|
LOGGER.debug(f"[Stream-Mapparr] Schedule settings: enabled={enabled}, cron='{cron_schedule}', tz={user_timezone}")
|
||||||
|
|
||||||
# Sync the schedule
|
# Sync the schedule
|
||||||
if enabled and cron_schedule:
|
if enabled and cron_schedule:
|
||||||
@@ -1697,7 +1697,7 @@ class Plugin:
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
# If we get an error (e.g., 404 for non-existent page), we've reached the end
|
# If we get an error (e.g., 404 for non-existent page), we've reached the end
|
||||||
if page > 1:
|
if page > 1:
|
||||||
logger.info(f"[Stream-Mapparr] No more group pages available (attempted page {page})")
|
logger.debug(f"[Stream-Mapparr] No more group pages available (attempted page {page})")
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
# If error on first page, re-raise
|
# If error on first page, re-raise
|
||||||
@@ -1706,7 +1706,7 @@ class Plugin:
|
|||||||
if isinstance(api_groups, dict) and 'results' in api_groups:
|
if isinstance(api_groups, dict) and 'results' in api_groups:
|
||||||
results = api_groups['results']
|
results = api_groups['results']
|
||||||
if not results:
|
if not results:
|
||||||
logger.info("[Stream-Mapparr] Reached last page of groups (empty results)")
|
logger.debug("[Stream-Mapparr] Reached last page of groups (empty results)")
|
||||||
break
|
break
|
||||||
all_groups.extend(results)
|
all_groups.extend(results)
|
||||||
if not api_groups.get('next'):
|
if not api_groups.get('next'):
|
||||||
@@ -1714,7 +1714,7 @@ class Plugin:
|
|||||||
page += 1
|
page += 1
|
||||||
elif isinstance(api_groups, list):
|
elif isinstance(api_groups, list):
|
||||||
if not api_groups:
|
if not api_groups:
|
||||||
logger.info("[Stream-Mapparr] Reached last page of groups (empty results)")
|
logger.debug("[Stream-Mapparr] Reached last page of groups (empty results)")
|
||||||
break
|
break
|
||||||
all_groups.extend(api_groups)
|
all_groups.extend(api_groups)
|
||||||
break
|
break
|
||||||
@@ -1818,7 +1818,7 @@ class Plugin:
|
|||||||
cron_schedule = settings.get("schedule_cron") or ""
|
cron_schedule = settings.get("schedule_cron") or ""
|
||||||
cron_schedule = cron_schedule.strip() if cron_schedule else ""
|
cron_schedule = cron_schedule.strip() if cron_schedule else ""
|
||||||
|
|
||||||
logger.info(f"[Stream-Mapparr] Syncing schedule: enabled={enabled}, schedule='{cron_schedule}', tz={user_timezone}")
|
logger.debug(f"[Stream-Mapparr] Syncing schedule: enabled={enabled}, schedule='{cron_schedule}', tz={user_timezone}")
|
||||||
|
|
||||||
if enabled and cron_schedule:
|
if enabled and cron_schedule:
|
||||||
if not self._validate_cron(cron_schedule):
|
if not self._validate_cron(cron_schedule):
|
||||||
@@ -1852,7 +1852,7 @@ class Plugin:
|
|||||||
"""View active schedule"""
|
"""View active schedule"""
|
||||||
try:
|
try:
|
||||||
user_timezone = settings.get("timezone", "America/Chicago")
|
user_timezone = settings.get("timezone", "America/Chicago")
|
||||||
logger.info(f"[Stream-Mapparr] Viewing schedules with timezone: {user_timezone}")
|
logger.debug(f"[Stream-Mapparr] Viewing schedules with timezone: {user_timezone}")
|
||||||
|
|
||||||
task_name = "stream_mapparr_scheduled_task"
|
task_name = "stream_mapparr_scheduled_task"
|
||||||
task = PeriodicTask.objects.filter(name=task_name, enabled=True).first()
|
task = PeriodicTask.objects.filter(name=task_name, enabled=True).first()
|
||||||
@@ -2023,7 +2023,7 @@ class Plugin:
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
# If we get an error (e.g., 404 for non-existent page), we've reached the end
|
# If we get an error (e.g., 404 for non-existent page), we've reached the end
|
||||||
if page > 1:
|
if page > 1:
|
||||||
logger.info(f"[Stream-Mapparr] No more group pages available (attempted page {page})")
|
logger.debug(f"[Stream-Mapparr] No more group pages available (attempted page {page})")
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
# If error on first page, re-raise
|
# If error on first page, re-raise
|
||||||
@@ -2032,7 +2032,7 @@ class Plugin:
|
|||||||
if isinstance(api_groups, dict) and 'results' in api_groups:
|
if isinstance(api_groups, dict) and 'results' in api_groups:
|
||||||
results = api_groups['results']
|
results = api_groups['results']
|
||||||
if not results:
|
if not results:
|
||||||
logger.info("[Stream-Mapparr] Reached last page of groups (empty results)")
|
logger.debug("[Stream-Mapparr] Reached last page of groups (empty results)")
|
||||||
break
|
break
|
||||||
all_groups.extend(results)
|
all_groups.extend(results)
|
||||||
if not api_groups.get('next'):
|
if not api_groups.get('next'):
|
||||||
@@ -2040,7 +2040,7 @@ class Plugin:
|
|||||||
page += 1
|
page += 1
|
||||||
elif isinstance(api_groups, list):
|
elif isinstance(api_groups, list):
|
||||||
if not api_groups:
|
if not api_groups:
|
||||||
logger.info("[Stream-Mapparr] Reached last page of groups (empty results)")
|
logger.debug("[Stream-Mapparr] Reached last page of groups (empty results)")
|
||||||
break
|
break
|
||||||
all_groups.extend(api_groups)
|
all_groups.extend(api_groups)
|
||||||
break
|
break
|
||||||
@@ -2095,7 +2095,7 @@ class Plugin:
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
# If we get an error (e.g., 404 for non-existent page), we've reached the end
|
# If we get an error (e.g., 404 for non-existent page), we've reached the end
|
||||||
if page > 1:
|
if page > 1:
|
||||||
logger.info(f"[Stream-Mapparr] No more pages available (attempted page {page})")
|
logger.debug(f"[Stream-Mapparr] No more pages available (attempted page {page})")
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
# If error on first page, re-raise
|
# If error on first page, re-raise
|
||||||
@@ -2107,7 +2107,7 @@ class Plugin:
|
|||||||
|
|
||||||
# Check if we got empty results
|
# Check if we got empty results
|
||||||
if not results:
|
if not results:
|
||||||
logger.info("[Stream-Mapparr] Reached last page of streams (empty results)")
|
logger.debug("[Stream-Mapparr] Reached last page of streams (empty results)")
|
||||||
break
|
break
|
||||||
|
|
||||||
all_streams_data.extend(results)
|
all_streams_data.extend(results)
|
||||||
@@ -2115,14 +2115,14 @@ class Plugin:
|
|||||||
|
|
||||||
# Stop if this page had fewer results than page_size (last page)
|
# Stop if this page had fewer results than page_size (last page)
|
||||||
if len(results) < 100:
|
if len(results) < 100:
|
||||||
logger.info("[Stream-Mapparr] Reached last page of streams")
|
logger.debug("[Stream-Mapparr] Reached last page of streams")
|
||||||
break
|
break
|
||||||
|
|
||||||
page += 1
|
page += 1
|
||||||
elif isinstance(streams_response, list):
|
elif isinstance(streams_response, list):
|
||||||
# Check if we got empty results
|
# Check if we got empty results
|
||||||
if not streams_response:
|
if not streams_response:
|
||||||
logger.info("[Stream-Mapparr] Reached last page of streams (empty results)")
|
logger.debug("[Stream-Mapparr] Reached last page of streams (empty results)")
|
||||||
break
|
break
|
||||||
|
|
||||||
# List response - could still be paginated
|
# List response - could still be paginated
|
||||||
@@ -2133,7 +2133,7 @@ class Plugin:
|
|||||||
if len(streams_response) == 100:
|
if len(streams_response) == 100:
|
||||||
page += 1
|
page += 1
|
||||||
else:
|
else:
|
||||||
logger.info("[Stream-Mapparr] Reached last page of streams")
|
logger.debug("[Stream-Mapparr] Reached last page of streams")
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
logger.warning("[Stream-Mapparr] Unexpected streams response format")
|
logger.warning("[Stream-Mapparr] Unexpected streams response format")
|
||||||
|
|||||||
Reference in New Issue
Block a user