#!/bin/bash # --- Zentrale Logging-Funktion --- # Dieses Skript stellt Funktionen für das Logging bereit. # Es ist als "Source-File" gedacht, d.h. es wird in andere Skripte geladen: # source /path/to/your/logger.sh # Standard-Log-Datei (kann in aufrufendem Skript überschrieben werden) DEFAULT_LOG_FILE="/root/log.txt" # <-- Anpassen, wenn gewünscht # Funktion zur Initialisierung des Loggers # Argument 1: Pfad zur Log-Datei für das aktuelle Skript # Usage: init_logger "/path/to/your/script.log" log_init() { local log_file="${1:-$DEFAULT_LOG_FILE}" # Nutze Argument 1, sonst Standard # Sicherstellen, dass das Log-Verzeichnis existiert mkdir -p "$(dirname "${log_file}")" # Leite NUR die Standardausgabe (stdout) in die Log-Datei um (anhängen) # Fehlerausgabe (stderr) bleibt auf stderr (oder wird von rclone 2>/dev/null abgefangen) exec 1>>"${log_file}" # Speichere den Pfad der aktiven Log-Datei in einer globalen Variable # So können spätere Funktionen den korrekten Log-Pfad verwenden, falls nötig ACTIVE_LOG_FILE="${log_file}" } # Funktion für INFO-Meldungen # Usage: log_info "Dies ist eine Info-Nachricht." log_info() { local message="$1" echo "$(date '+%Y-%m-%d %H:%M:%S') [INFO] ${message}" } # Funktion für WARN-Meldungen # Usage: log_warn "Dies ist eine Warnung!" log_warn() { local message="$1" echo "$(date '+%Y-%m-%d %H:%M:%S') [WARN] ${message}" } # Funktion für ERROR-Meldungen # Usage: log_error "Dies ist ein Fehler!" log_error() { local message="$1" echo "$(date '+%Y-%m-%d %H:%M:%S') [ERROR] ${message}" # Optional: Fehler zusätzlich an stderr senden oder eine Benachrichtigung auslösen # echo "$(date '+%Y-%m-%d %H:%M:%S') [ERROR] ${message}" >&2 } # Funktion zum Starten eines Skripts im Log # Usage: log_start "Name des Skripts" log_start() { local script_name="$1" echo "" # Leere Zeile für bessere Trennung echo "--- ${script_name} gestartet: $(date) ---" } # Funktion zum Beenden eines Skripts im Log # Usage: log_end "Name des Skripts" log_end() { local script_name="$1" echo "--- ${script_name} abgeschlossen: $(date) ---" echo "" # Leere Zeile für bessere Trennung } # Hilfsfunktion, um rclone-Fortschritt zu unterdrücken, aber Warnungen/Fehler durchzulassen # (Dies ist eine erweiterte Funktion, die für rclone -P hilfreich ist. # Sie sollte rclone's stdout und stderr separat behandeln, um Warnungen/Fehler von rclone # ins Log zu bekommen, aber den Fortschritt zu unterdrücken. Das ist komplexer mit exec.) # Für den rclone-Fall ist es einfacher, 2>/dev/null direkt am rclone-Befehl zu belassen, # und unsere log_warn zu nutzen, wenn $? -ne 0 ist.