Bash-Logging-Tool

Ein einfaches Bash-Script zum Logging in anderen Scripten. Es unterstützt verschiedene Log-Levels und schreibt sowohl auf die Konsole als auch in eine Logdatei.


Features

  • Mehrere Log-Levels: INFO, WARN, ERROR, START, END
  • Duales Logging: Ausgabe auf Konsole und in eine Logdatei
  • Automatische Verzeichniserstellung: Erstellt das Log-Verzeichnis, falls nicht vorhanden
  • Zeitstempel: Jeder Eintrag wird mit Datum und Uhrzeit versehen
  • Flexible Logdatei: Standard- oder benutzerdefinierter Pfad
  • Log-Rotation: Automatische Verwaltung der Logdateien mit logrotate

Installation

  1. Speichere das Script als logger.sh in deinem Projektverzeichnis.
  2. Binde es in deinem Script mit source ein:
    source /pfad/zu/logger.sh
    
  3. Die Umgebungsvariable "GIT_PFAD" muss in der .bashrc des Nutzers gesetzt sein!

Verwendung

1. Initialisierung

Setze die Logdatei (optional, Standard: $HOME/log.txt):

log_init "/pfad/zur/logdatei.log"  # Benutzerdefinierter Pfad
# oder
log_init  # Nutzt den Standardpfad ($HOME/log.txt)

2. Logging-Funktionen

Funktion Beschreibung Beispiel
log_info Informationsmeldung loggen log_info "Das ist eine Info."
log_warn Warnmeldung loggen log_warn "Achtung, etwas ist ungewöhnlich!"
log_error Fehlermeldung loggen log_error "Ein Fehler ist aufgetreten!"
log_start Script-Start markieren log_start "Backup-Prozess"
log_end Script-Ende markieren log_end "Backup-Prozess"

3. Beispiel

#!/bin/bash
source logger.sh

log_init "$HOME/mein_script.log"
log_start "Datenverarbeitung"

log_info "Starte Datenimport..."
# ... dein Code ...
log_warn "Datenformat unvollständig, aber fortsetzbar."
# ... dein Code ...
log_error "Fehler beim Schreiben der Datei!"
log_end "Datenverarbeitung"

Konfiguration

  • Standard-Logdatei: $HOME/log.txt
  • Voreingestellter Pfad im Script: $HOME/Gitea/logger/log.txt (kann in Zeile 2 der logger.sh angepasst werden)

Log-Rotation

Das Tool nutzt logrotate zur Verwaltung der Logdateien. Die Standardkonfiguration (logrotate.cfg) sieht wie folgt aus:

/root/log.txt {
    monthly
    rotate 3
    compress
    missingok
    notifempty
    copytruncate
    dateext
}

Aufruf von logrotate

logrotate -v --log=logrotate.log -s="./logrotate.status" logrotate.cfg

Optionen der Log-Rotation

Option Beschreibung
monthly Logdatei monatlich rotieren.
rotate 3 Maximal 3 archivierte Logdateien behalten.
compress Ältere Logdateien mit gzip komprimieren.
missingok Keine Fehlermeldung, wenn die Logdatei nicht existiert.
notifempty Leere Logdateien nicht rotieren.
copytruncate Logdatei kopieren und anschließend leeren (kein Neustart des Scripts nötig).
dateext Archivdateien mit Datumsstempel versehen (z.B. log.txt-20250816.gz).

Statusdatei

  • Die Statusdatei (logrotate.status) speichert den Rotationsstatus und wird mit -s angegeben.

Beispiel-Ausgabe

In der Konsole:

2025-08-16 14:30:00 [INFO] Das ist eine Info.
2025-08-16 14:30:05 [WARN] Achtung, etwas ist ungewöhnlich!

In der Logdatei:

2025-08-16 14:30:00 [START] --- Backup-Prozess gestartet ---
2025-08-16 14:30:00 [START] --- Script: ./mein_script.sh ---
2025-08-16 14:30:00 [INFO] Starte Datenimport...
2025-08-16 14:30:05 [WARN] Datenformat unvollständig, aber fortsetzbar.
2025-08-16 14:30:10 [ERROR] Fehler beim Schreiben der Datei!
2025-08-16 14:30:15 [END] --- Backup-Prozess abgeschlossen ---
Description
No description provided
Readme 66 KiB
Languages
Shell 100%