zkt26/sk1/lib/logger.sh
2026-05-12 19:27:18 +02:00

44 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# =============================================================================
# lib/logger.sh — Shared logging library
#
# Usage from any script:
# source "$(dirname "$0")/lib/logger.sh" "operation-name"
#
# The first argument becomes the log file prefix.
# Example: source lib/logger.sh "deploy" → logs/deploy-20260512-123456.log
#
# Override log level at runtime:
# export LOG_LEVEL=DEBUG
# =============================================================================
# Operation name passed by the calling script (default: "app")
_LOG_PREFIX="${1:-app}"
mkdir -p "$(dirname "$0")/logs"
LOG_FILE="$(dirname "$0")/logs/${_LOG_PREFIX}-$(date +%Y%m%d-%H%M%S).log"
LOG_LEVEL="${LOG_LEVEL:-INFO}"
_log() {
local level="$1"; shift
local message="$*"
local timestamp; timestamp="$(date '+%Y-%m-%d %H:%M:%S')"
local line="[$timestamp] [$level] $message"
case "$level" in
INFO) echo -e "\033[0;32m${line}\033[0m" ;;
WARN) echo -e "\033[0;33m${line}\033[0m" ;;
ERROR) echo -e "\033[0;31m${line}\033[0m" ;;
DEBUG)
[ "$LOG_LEVEL" = "DEBUG" ] && echo -e "\033[0;36m${line}\033[0m" || return 0
;;
esac
echo "$line" >> "$LOG_FILE"
}
log_info() { _log INFO "$@"; }
log_warn() { _log WARN "$@"; }
log_error() { _log ERROR "$@"; }
log_debug() { _log DEBUG "$@"; }