function log() { local log_level=0 local log_level_string="" case $1 in debug) log_level=0 log_level_string="[DBG]" ;; verbose) log_level=1 log_level_string="[VRB]" ;; info) log_level=2 log_level_string="[INF]" ;; warn) log_level=3 log_level_string="[WRN]" ;; error) log_level=4 log_level_string="[ERR]" ;; esac shift # set the log level to info if unset [[ -z "DOT_LOG_LEVEL" ]] && DOT_LOG_LEVEL=2 # if this is too verbose, stop now [[ "$DOT_LOG_LEVEL" -gt "$level" ]] && return [[ -n "$_modulename" ]] && module="[$_modulename]: " || module="" echo "$log_level_string $module$@" }