# 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: ```bash source /pfad/zu/logger.sh 3. Die Umgebungsvariable "GIT_PFAD" muss in der .basgrc des Nutzers gesetzt sein! --- ## Verwendung ### 1. Initialisierung Setze die Logdatei (optional, Standard: `$HOME/log.txt`): ```bash 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 ```bash #!/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: ```plaintext /root/log.txt { monthly rotate 3 compress missingok notifempty copytruncate dateext } ``` ### Aufruf von logrotate ```bash 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 --- ```