feat: Refactor logging system to use local log directory and add synchronization and cleanup functions

This commit is contained in:
Peter Wood
2025-06-01 13:22:06 -04:00
parent 6811d2ba5e
commit 209b855977
4 changed files with 275 additions and 81 deletions

View File

@@ -17,9 +17,9 @@ NC='\033[0m' # No Color
# Configuration
SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"
BACKUP_ROOT="/mnt/share/media/backups/plex"
LOG_ROOT="/mnt/share/media/backups/logs"
JSON_LOG_FILE="$SCRIPT_DIR/logs/plex-backup.json"
PERFORMANCE_LOG_FILE="$SCRIPT_DIR/logs/plex-backup-performance.json"
SHARED_LOG_ROOT="/mnt/share/media/backups/logs"
LOCAL_LOG_ROOT="$SCRIPT_DIR/logs"
PERFORMANCE_LOG_FILE="$LOCAL_LOG_ROOT/plex-backup-performance.json"
# Display mode
WATCH_MODE=false
@@ -71,6 +71,24 @@ clear_screen() {
fi
}
# Helper function to find most recent log from local or shared location
find_most_recent_log() {
local log_pattern="$1"
local recent_log=""
# Check local logs first (preferred)
if [ -d "$LOCAL_LOG_ROOT" ]; then
recent_log=$(find "$LOCAL_LOG_ROOT" -name "$log_pattern" -type f 2>/dev/null | sort | tail -1)
fi
# If no local log found, check shared location as fallback
if [ -z "$recent_log" ] && [ -d "$SHARED_LOG_ROOT" ]; then
recent_log=$(find "$SHARED_LOG_ROOT" -name "$log_pattern" -type f 2>/dev/null | sort | tail -1)
fi
echo "$recent_log"
}
# Header display
show_header() {
echo -e "${CYAN}╔══════════════════════════════════════════════════════════════════════════════╗${NC}"
@@ -106,10 +124,17 @@ check_system_status() {
log_status "ERROR" "Backup directory missing: $BACKUP_ROOT"
fi
if [ -d "$LOG_ROOT" ]; then
log_status "OK" "Log directory exists"
# Check log directories (prioritize local, show shared as secondary)
if [ -d "$LOCAL_LOG_ROOT" ]; then
log_status "OK" "Local log directory exists"
else
log_status "WARN" "Log directory missing: $LOG_ROOT"
log_status "WARN" "Local log directory missing: $LOCAL_LOG_ROOT"
fi
if [ -d "$SHARED_LOG_ROOT" ]; then
log_status "INFO" "Shared log directory accessible"
else
log_status "WARN" "Shared log directory missing: $SHARED_LOG_ROOT"
fi
# Check dependencies
@@ -238,31 +263,21 @@ show_recent_activity() {
echo -e "${BLUE}📋 RECENT ACTIVITY${NC}"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
# Check JSON log for last backup times
if [ -f "$JSON_LOG_FILE" ]; then
log_status "OK" "Backup tracking log found"
local file_count=$(jq 'length' "$JSON_LOG_FILE" 2>/dev/null || echo "0")
log_status "INFO" "Tracked files: $file_count"
if [ "$file_count" -gt 0 ]; then
echo -e "${YELLOW}Last Backup Times:${NC}"
jq -r 'to_entries | .[] | " \(.key | split("/") | .[-1]): \(.value | strftime("%Y-%m-%d %H:%M:%S"))"' "$JSON_LOG_FILE" 2>/dev/null | head -5
fi
else
log_status "WARN" "Backup tracking log not found"
fi
# Check recent log files
if [ -d "$LOG_ROOT" ]; then
local recent_log=$(find "$LOG_ROOT" -name "plex-backup-*.log" -type f 2>/dev/null | sort | tail -1)
if [ -n "$recent_log" ]; then
local log_date=$(basename "$recent_log" | sed 's/plex-backup-//' | sed 's/.log//')
log_status "INFO" "Most recent log: $log_date"
# Check for errors in recent log
local error_count=$(grep -c "ERROR:" "$recent_log" 2>/dev/null || echo "0")
local warning_count=$(grep -c "WARNING:" "$recent_log" 2>/dev/null || echo "0")
local recent_log=$(find_most_recent_log "plex-backup-*.log")
if [ -n "$recent_log" ]; then
local log_date=$(basename "$recent_log" | sed 's/plex-backup-//' | sed 's/.log//')
local log_location=""
if [[ "$recent_log" == "$LOCAL_LOG_ROOT"* ]]; then
log_location=" (local)"
else
log_location=" (shared)"
fi
log_status "INFO" "Most recent log: $log_date$log_location"
# Check for errors in recent log
local error_count=$(grep -c "ERROR:" "$recent_log" 2>/dev/null || echo "0")
local warning_count=$(grep -c "WARNING:" "$recent_log" 2>/dev/null || echo "0")
if [ "$error_count" -eq 0 ] && [ "$warning_count" -eq 0 ]; then
log_status "OK" "No errors or warnings in recent log"