4.2 KiB
4.2 KiB
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
- Speichere das Script als
logger.shin deinem Projektverzeichnis. - Binde es in deinem Script mit
sourceein:source /pfad/zu/logger.sh
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 derlogger.shangepasst 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-sangegeben.
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 ---