Files
logger/README.md
2025-09-04 12:21:30 +00:00

132 lines
4.2 KiB
Markdown

# 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 .bashrc 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 ---
```