#!/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