commit 8d790774bc6ace7f6d60f95d5257a23e6735bdac Author: Alf Date: Mon Jun 16 19:17:12 2025 +0000 Erster Commit diff --git a/logger.sh b/logger.sh new file mode 100755 index 0000000..8503fcc --- /dev/null +++ b/logger.sh @@ -0,0 +1,74 @@ +#!/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. +