81 lines
2.3 KiB
Bash
81 lines
2.3 KiB
Bash
#!/bin/bash
|
|
|
|
# Die Variable GIT_PFAD muss in der .bashrc-Datei für jeden Nutzer gesetzt werden!
|
|
GIT_PFAD="$HOME/Gitea"
|
|
DEFAULT_LOG_FILE="$HOME/log.txt"
|
|
ACTIVE_LOG_FILE="$GIT_PFAD/logger/Logs/log.log"
|
|
|
|
# Funktion zur Anzeige der Hilfe
|
|
show_help() {
|
|
echo "Verwendung: $0 [Optionen]"
|
|
echo "Optionen:"
|
|
echo " -f, --file Log-Datei angeben (Standard: $ACTIVE_LOG_FILE)"
|
|
echo " -m, --message Log-Nachricht angeben"
|
|
echo " -l, --level Log-Level angeben (INFO, WARN, ERROR, START, END)"
|
|
echo " -h, --help Diese Hilfe anzeigen"
|
|
exit 0
|
|
}
|
|
|
|
# Kommandozeilenargumente parsen
|
|
while [[ "$#" -gt 0 ]]; do
|
|
case $1 in
|
|
-f|--file) ACTIVE_LOG_FILE="$2"; shift ;;
|
|
-m|--message) MESSAGE="$2"; shift ;;
|
|
-l|--level) LEVEL="$2"; shift ;;
|
|
-h|--help) show_help ;;
|
|
*) echo "Unbekannte Option: $1"; show_help; exit 1 ;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
# Die tatsächlich genutzte Logdatei kann mit log_init "dateiname" gesetzt werden.
|
|
log_init() {
|
|
ACTIVE_LOG_FILE="$1"
|
|
echo "Logdatei: $ACTIVE_LOG_FILE"
|
|
if [ ! -f "$ACTIVE_LOG_FILE" ]; then
|
|
echo "Fehler: Logdatei '$ACTIVE_LOG_FILE' existiert nicht!" >&2
|
|
exit 1
|
|
fi
|
|
_log_dual "INIT" "Log-Datei initialisiert: $ACTIVE_LOG_FILE"
|
|
}
|
|
|
|
_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
|
|
}
|
|
|
|
log_info() { _log_dual "INFO" "$1"; }
|
|
log_warn() { _log_dual "WARN" "$1"; }
|
|
log_error() { _log_dual "ERROR" "$1"; }
|
|
log_start() {
|
|
clear
|
|
_log_dual "START" "--- $1 gestartet ---"
|
|
_log_dual "START" "--- Script: $0 ---"
|
|
}
|
|
log_end() {
|
|
_log_dual "END" "--- $1 abgeschlossen ---"
|
|
echo "" >> $ACTIVE_LOG_FILE
|
|
echo "" >> $ACTIVE_LOG_FILE
|
|
echo "" >> $ACTIVE_LOG_FILE
|
|
}
|
|
|
|
# Hauptlogik für Kommandozeilenaufruf
|
|
if [ -n "$MESSAGE" ]; then
|
|
case "$LEVEL" in
|
|
INFO) log_info "$MESSAGE" ;;
|
|
WARN) log_warn "$MESSAGE" ;;
|
|
ERROR) log_error "$MESSAGE" ;;
|
|
START) log_start "$MESSAGE" ;;
|
|
END) log_end "$MESSAGE" ;;
|
|
*)
|
|
echo "Fehler: Ungültiger Log-Level '$LEVEL'. Erlaubt sind INFO, WARN, ERROR, START, END." >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
fi |