#!/usr/bin/env zsh declare -A levels=([DEBUG]=0 [INFO]=1 [WARN]=2 [ERROR]=3) # LOG_LEVEL="DEBUG" logger() { if [ -z ${LOG_LEVEL+x} ]; then return 3 fi local log_message=$1 local log_priority=$2 #check if level exists [[ ${levels[$log_priority]} ]] || return 1 #check if level is enough (( ${levels[$log_priority]} < ${levels[$LOG_LEVEL]} )) && return 2 #log here echo "${log_priority} : ${log_message}" } logger.debug(){ logger $1 "DEBUG" } logger.info(){ logger $1 "INFO" } logger.warn(){ logger $1 "WARN" } logger.error(){ logger $1 "ERROR" }