Files
image-builder/tools/logging.sh
Hangfan Li 02e6a12063 logging: add verbose mode
Dumping commandline in debug mode
2025-12-16 12:39:50 +08:00

86 lines
1.8 KiB
Bash

#!/usr/bin/env false
readonly LOGLEVEL_VERBOSE=0
readonly LOGLEVEL_DEBUG=1
readonly LOGLEVEL_INFO=2
readonly LOGLEVEL_WARN=3
readonly LOGLEVEL_ERROR=4
__logparselevel() {
if [ -z "${LOG_LEVEL:-}" ]; then
echo $LOGLEVEL_INFO
elif [ "${LOG_LEVEL}" = "VERBOSE" ]; then
echo $LOGLEVEL_VERBOSE
elif [ "${LOG_LEVEL}" = "DEBUG" ]; then
echo $LOGLEVEL_DEBUG
elif [ "${LOG_LEVEL}" = "INFO" ]; then
echo $LOGLEVEL_INFO
elif [ "${LOG_LEVEL}" = "WARN" ]; then
echo $LOGLEVEL_WARN
elif [ "${LOG_LEVEL}" = "ERROR" ]; then
echo $LOGLEVEL_ERROR
else
echo $LOGLEVEL_INFO
fi
}
__logprintraw() {
local formated_msg="$1"
>&2 echo "${formated_msg}"
}
__logprint() {
local level_fmt="$1"
local msg="$2"
local curr_time; curr_time="[$(date)]"
local formated_msg="${curr_time}${level_fmt}: ${msg}"
__logprintraw "${formated_msg}"
}
logcmd() {
if [ "$(__logparselevel)" -le "$LOGLEVEL_DEBUG" ]; then
echo "+ $*"
{ "$@" ;}
else
{ "$@" >/dev/null 2>&1;}
fi
}
log_expand_if_verbose() {
if [ "$(__logparselevel)" -le "$LOGLEVEL_VERBOSE" ]; then
printf "%s" "$1"
fi
}
logd() {
if [ "$(__logparselevel)" -le "$LOGLEVEL_DEBUG" ]; then
__logprint "[DEBUG]" "$1"
fi
}
logdraw() {
if [ "$(__logparselevel)" -le "$LOGLEVEL_DEBUG" ]; then
__logprint "[DEBUG]" "raw print:"
__logprintraw "$1"
fi
}
logi() {
if [ "$(__logparselevel)" -le "$LOGLEVEL_INFO" ]; then
__logprint "[INFO ]" "$1"
fi
}
logw() {
if [ "$(__logparselevel)" -le "$LOGLEVEL_WARN" ]; then
__logprint "[WARN ]" "$1"
fi
}
loge() {
if [ "$(__logparselevel)" -le "$LOGLEVEL_ERROR" ]; then
__logprint "[ERROR]" "$1"
fi
}