mirror of
https://github.com/acedanger/shell.git
synced 2025-12-06 00:00:13 -08:00
feat: Refactor logging system to use local log directory and add synchronization and cleanup functions
This commit is contained in:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user