43 lines
1.4 KiB
Bash
Executable File
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 "$@"; } |