fix(backup-log-monitor): improve log status display and filter out empty journalctl messages

This commit is contained in:
Peter Wood
2026-03-26 10:12:31 -04:00
parent 56d35fa3ee
commit 88d1bf6878

View File

@@ -6,13 +6,13 @@
set -e set -e
# Color codes for output # Color codes for output
RED='\033[0;31m' RED=$'\033[0;31m'
GREEN='\033[0;32m' GREEN=$'\033[0;32m'
YELLOW='\033[1;33m' YELLOW=$'\033[1;33m'
BLUE='\033[0;34m' BLUE=$'\033[0;34m'
CYAN='\033[0;36m' CYAN=$'\033[0;36m'
PURPLE='\033[0;35m' PURPLE=$'\033[0;35m'
NC='\033[0m' # No Color NC=$'\033[0m' # No Color
SCRIPT_DIR="$(dirname "$(readlink -f "$0")")" SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"
LOG_DIR="$SCRIPT_DIR/logs" LOG_DIR="$SCRIPT_DIR/logs"
@@ -315,6 +315,11 @@ show_service_status() {
local last_entry local last_entry
last_entry=$(sudo journalctl -t "$tag" --output=short-iso -n 1 2>/dev/null | tail -1) 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 if [ -n "$last_entry" ]; then
local timestamp local timestamp
local message local message
@@ -328,18 +333,28 @@ show_service_status() {
current_time=$(date +%s) current_time=$(date +%s)
local hours_diff=$(( (current_time - entry_time) / 3600 )) local hours_diff=$(( (current_time - entry_time) / 3600 ))
local status local status_word status
if [ "$hours_diff" -le 24 ]; then if [ "$hours_diff" -le 24 ]; then
status="${GREEN}Active${NC}" status_word="Active"
status="${GREEN}${status_word}${NC}"
elif [ "$hours_diff" -le 48 ]; then elif [ "$hours_diff" -le 48 ]; then
status="${YELLOW}Recent${NC}" status_word="Recent"
status="${YELLOW}${status_word}${NC}"
else else
status="${RED}Stale${NC}" status_word="Stale"
status="${RED}${status_word}${NC}"
fi 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 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 fi
done done
} }