Files

72 lines
2.0 KiB
Bash
Raw Permalink Normal View History

#!/usr/bin/env bash
# Common logging functions for scripts
# Usage: source "$SCRIPT_DIR/lib/common/logging.sh"
# Source colors if not already sourced
[ -z "${RED:-}" ] && source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/colors.sh"
# Logging levels (idempotent & safe to re-source)
: "${LOG_LEVEL_DEBUG:=0}"
: "${LOG_LEVEL_INFO:=1}"
: "${LOG_LEVEL_WARN:=2}"
: "${LOG_LEVEL_ERROR:=0}"
# Mark as readonly if not already
readonly LOG_LEVEL_DEBUG 2>/dev/null || true
readonly LOG_LEVEL_INFO 2>/dev/null || true
readonly LOG_LEVEL_WARN 2>/dev/null || true
readonly LOG_LEVEL_ERROR 2>/dev/null || true
# Default log level
: "${LOG_LEVEL:=$LOG_LEVEL_INFO}"
# Logging functions
log_debug() {
[ "$LOG_LEVEL" -le "$LOG_LEVEL_DEBUG" ] && echo -e "${CYAN}[DEBUG]${NC} $*" >&2
}
log_info() {
[ "$LOG_LEVEL" -le "$LOG_LEVEL_INFO" ] && echo -e "${GREEN}[INFO]${NC} $*"
}
log_warn() {
[ "$LOG_LEVEL" -le "$LOG_LEVEL_WARN" ] && echo -e "${YELLOW}[WARN]${NC} $*" >&2
}
log_error() {
[ "$LOG_LEVEL" -le "$LOG_LEVEL_ERROR" ] && echo -e "${RED}[ERROR]${NC} $*" >&2
}
log_success() {
echo -e "${GREEN}${NC} $*"
}
log_failure() {
echo -e "${RED}${NC} $*"
}
log_section() {
local title="$1"
echo ""
echo -e "${BOLD}${BLUE}════════════════════════════════════════════════════════════════${NC}"
echo -e "${BOLD}${BLUE} ${title}${NC}"
echo -e "${BOLD}${BLUE}════════════════════════════════════════════════════════════════${NC}"
echo ""
}
log_subsection() {
local title="$1"
echo ""
echo -e "${CYAN}${title}${NC}"
echo "$(printf '─%.0s' {1..60})"
echo ""
}
# Print separator line
print_separator() {
local char="${1:-=}"
local width="${2:-80}"
printf "%.0s${char}" $(seq 1 "$width")
echo
}