diff --git a/backup-log-monitor.sh b/backup-log-monitor.sh index b30139d..4ed4e67 100755 --- a/backup-log-monitor.sh +++ b/backup-log-monitor.sh @@ -6,13 +6,13 @@ set -e # Color codes for output -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -BLUE='\033[0;34m' -CYAN='\033[0;36m' -PURPLE='\033[0;35m' -NC='\033[0m' # No Color +RED=$'\033[0;31m' +GREEN=$'\033[0;32m' +YELLOW=$'\033[1;33m' +BLUE=$'\033[0;34m' +CYAN=$'\033[0;36m' +PURPLE=$'\033[0;35m' +NC=$'\033[0m' # No Color SCRIPT_DIR="$(dirname "$(readlink -f "$0")")" LOG_DIR="$SCRIPT_DIR/logs" @@ -315,6 +315,11 @@ show_service_status() { local last_entry last_entry=$(sudo journalctl -t "$tag" --output=short-iso -n 1 2>/dev/null | tail -1) + # Filter out journalctl informational messages (e.g., "-- No entries --") + if [[ "$last_entry" =~ ^-- ]]; then + last_entry="" + fi + if [ -n "$last_entry" ]; then local timestamp local message @@ -328,18 +333,28 @@ show_service_status() { current_time=$(date +%s) local hours_diff=$(( (current_time - entry_time) / 3600 )) - local status + local status_word status if [ "$hours_diff" -le 24 ]; then - status="${GREEN}Active${NC}" + status_word="Active" + status="${GREEN}${status_word}${NC}" elif [ "$hours_diff" -le 48 ]; then - status="${YELLOW}Recent${NC}" + status_word="Recent" + status="${YELLOW}${status_word}${NC}" else - status="${RED}Stale${NC}" + status_word="Stale" + status="${RED}${status_word}${NC}" fi - printf "%-20s %-25s %-20s %-30s\n" "$tag" "$status" "$timestamp" "$message" + # Adjust printf width to account for invisible ANSI escape code bytes + local ansi_overhead=$(( ${#status} - ${#status_word} )) + local padded_width=$(( 15 + ansi_overhead )) + printf "%-20s %-${padded_width}s %-20s %-30s\n" "$tag" "$status" "$timestamp" "$message" else - printf "%-20s %-25s %-20s %-30s\n" "$tag" "${RED}No logs${NC}" "Never" "No activity found" + local no_logs_word="No logs" + local no_logs="${RED}${no_logs_word}${NC}" + local ansi_overhead=$(( ${#no_logs} - ${#no_logs_word} )) + local padded_width=$(( 15 + ansi_overhead )) + printf "%-20s %-${padded_width}s %-20s %-30s\n" "$tag" "$no_logs" "Never" "No activity found" fi done }