| #!/bin/bash -e |
| |
| # log helper base on environment variable CONTAINER_LOG_LEVEL |
| # CONTAINER_LOG_LEVEL environment variable is set by run tool based on --log-level argument (info by default) |
| # or you can set it directly with docker --env argument |
| |
| # Usage example: log-helper info CONTAINER_LOG_LEVEL is info or more |
| # the message "CONTAINER_LOG_LEVEL is info or more" will be printed only if log level is info, debug or trace |
| |
| LOG_LEVEL_NONE=0 |
| LOG_LEVEL_ERROR=1 |
| LOG_LEVEL_WARNING=2 |
| LOG_LEVEL_INFO=3 |
| LOG_LEVEL_DEBUG=4 |
| LOG_LEVEL_TRACE=5 |
| |
| # default log level if CONTAINER_LOG_LEVEL is not set -> info |
| log_level=${CONTAINER_LOG_LEVEL:-${LOG_LEVEL_INFO}} |
| |
| call=$1 # function to call (error, warning, info, debug, trace, level) |
| if [[ ! "$call" =~ ^(error|warning|info|debug|trace|level)$ ]]; then |
| echo "Error: Function $call not found" |
| echo "Allowed functions are: error, warning, info, debug, trace, level" |
| echo "usage example: log-helper info hello !" |
| exit 1 |
| fi |
| |
| |
| echo_msg="" # message to print if required log level is set |
| echo_param="" # echo command parameters |
| |
| function error() { |
| getEchoParams $@ |
| |
| if [ $log_level -ge 1 ]; then |
| echo $echo_param "$echo_msg" |
| fi |
| } |
| |
| function warning() { |
| getEchoParams $@ |
| |
| if [ $log_level -ge 2 ]; then |
| echo $echo_param "$echo_msg" |
| fi |
| } |
| |
| function info() { |
| getEchoParams $@ |
| |
| if [ $log_level -ge 3 ]; then |
| echo $echo_param "$echo_msg" |
| fi |
| } |
| |
| function debug() { |
| getEchoParams $@ |
| |
| if [ $log_level -ge 4 ]; then |
| echo $echo_param "$echo_msg" |
| fi |
| } |
| |
| function trace() { |
| getEchoParams $@ |
| |
| if [ $log_level -ge 5 ]; then |
| echo $echo_param "$echo_msg" |
| fi |
| } |
| |
| function getMsgFromStdin() { |
| if [ -z "$2" ]; then |
| echo_msg=$(cat) |
| fi |
| } |
| |
| function getEchoParams() { |
| |
| echo_msg="$@" |
| |
| if [[ "$1" =~ ^(-e|-n|-E)$ ]]; then |
| echo_param=$1 |
| echo_msg=${echo_msg#$1 } |
| fi |
| |
| # read from pipe if echo_msg is empty |
| [[ -n "$echo_msg" ]] || getMsgFromStdin |
| } |
| |
| function level() { |
| |
| local operator=$1 |
| local loglevel_str=$2 |
| local loglevel_str=${loglevel_str^^} # uppercase |
| |
| if [[ ! "$operator" =~ ^(eq|ne|gt|ge|lt|le)$ ]]; then |
| echo "Error: Operator $operator not allowed" |
| echo "Allowed operators are: eq, ne, gt, ge, lt, le" |
| echo "Help: http://www.tldp.org/LDP/abs/html/comparison-ops.html" |
| exit 1 |
| fi |
| |
| if [ -z "$loglevel_str" ]; then |
| echo "Error: No log level provided" |
| echo "Allowed log level are: none, error, warning, info, debug, trace" |
| echo "usage example: log-helper level eq info" |
| exit 1 |
| fi |
| |
| local log_level_var=LOG_LEVEL_$loglevel_str |
| |
| if [ $log_level -$operator ${!log_level_var} ]; then |
| exit 0 |
| else |
| exit 1 |
| fi |
| } |
| |
| shift |
| $call "$@" |