logger.sh aktualisiert
This commit is contained in:
82
logger.sh
82
logger.sh
@ -1,74 +1,32 @@
|
||||
#!/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
|
||||
DEFAULT_LOG_FILE="/root/log.txt"
|
||||
ACTIVE_LOG_FILE=""
|
||||
|
||||
# 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}"
|
||||
ACTIVE_LOG_FILE="${1:-$DEFAULT_LOG_FILE}"
|
||||
mkdir -p "$(dirname "${ACTIVE_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}"
|
||||
_log_dual() {
|
||||
local level="$1"
|
||||
local message="$2"
|
||||
local timestamp
|
||||
timestamp="$(date '+%Y-%m-%d %H:%M:%S')"
|
||||
local line="${timestamp} [${level}] ${message}"
|
||||
|
||||
echo "$line" # Konsole
|
||||
echo "$line" >> "${ACTIVE_LOG_FILE}" # Logdatei
|
||||
}
|
||||
|
||||
# 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_info() { _log_dual "INFO" "$1"; }
|
||||
log_warn() { _log_dual "WARN" "$1"; }
|
||||
log_error() { _log_dual "ERROR" "$1"; }
|
||||
log_start() {
|
||||
local script_name="$1"
|
||||
echo "" # Leere Zeile für bessere Trennung
|
||||
echo "--- ${script_name} gestartet: $(date) ---"
|
||||
echo "" | tee -a "${ACTIVE_LOG_FILE}"
|
||||
_log_dual "START" "--- $1 gestartet ---"
|
||||
}
|
||||
|
||||
# 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
|
||||
_log_dual "END" "--- $1 abgeschlossen ---"
|
||||
echo "" | tee -a "${ACTIVE_LOG_FILE}"
|
||||
}
|
||||
|
||||
# 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.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user