zkt26/sk1/lib/logger.sh
2026-05-12 23:55:32 +02:00

43 lines
1.4 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) printf "\033[0;32m%s\033[0m\n" "$line" ;;
WARN) printf "\033[0;33m%s\033[0m\n" "$line" ;;
ERROR) printf "\033[0;31m%s\033[0m\n" "$line" ;;
DEBUG)
[ "$LOG_LEVEL" = "DEBUG" ] && printf "\033[0;36m%s\033[0m\n" "$line" || return 0
;;
esac
printf "%s\n" "$line" >> "$LOG_FILE"
}
log_info() { _log INFO "$@"; }
log_warn() { _log WARN "$@"; }
log_error() { _log ERROR "$@"; }
log_debug() { _log DEBUG "$@"; }