mirror of
https://github.com/docker-mailserver/docker-mailserver.git
synced 2024-01-19 02:48:50 +00:00
24031ae365
* added new `_log` function With `_log`, the `_notify` method wa rendered obsolete. `_notify` was not completely removed due to test failures in `check-for-changes.sh`. The new `_log` function properly uses log levels such as `trace`, `debug`, `info`, `warn` and `error`. It provides a cleaner solution and renders `DMS_DEBUG` obsolete too (as only `_notify` depends on it). * converted all helper script to new `_log` function * converted all startup stacks to new `log` function * `start-mailserver.sh` now uses new `_log` function * final test and misc small script adjustments * updated documentation
120 lines
3.1 KiB
Bash
120 lines
3.1 KiB
Bash
#! /bin/bash
|
|
|
|
LOG_RESET='\e[0m'
|
|
LOG_LGRAY='\e[37m'
|
|
LOG_LBLUE='\e[94m'
|
|
LOG_BLUE='\e[34m'
|
|
LOG_LYELLOW='\e[93m'
|
|
LOG_RED='\e[91m'
|
|
|
|
# ### DMS Logging Functionality
|
|
#
|
|
# This function provides the logging for scripts used by DMS.
|
|
# It adheres to the convention for log levels.
|
|
# Valid values (in order of increasing verbosity) are: `error`,
|
|
# `warn`, `info`, `debug` and `trace`. The default log level
|
|
# is `info`.
|
|
#
|
|
# #### Arguments
|
|
#
|
|
# $1 :: the log level to log the message with
|
|
# $2 :: the message
|
|
#
|
|
# #### Panics
|
|
#
|
|
# If the first argument is not set or invalid, an error
|
|
# message is logged. Likewise when the second argument
|
|
# is missing. Both failures will return with exit code '1'.
|
|
function _log
|
|
{
|
|
if [[ -z ${1+set} ]]
|
|
then
|
|
echo "Call to '_log' is missing a valid log level" >&2
|
|
return 1
|
|
fi
|
|
|
|
if [[ -z ${2+set} ]]
|
|
then
|
|
echo "Call to '_log' is missing a message to log" >&2
|
|
return 1
|
|
fi
|
|
|
|
local MESSAGE LEVEL_AS_INT
|
|
MESSAGE="${LOG_RESET}["
|
|
|
|
case "${LOG_LEVEL:-}" in
|
|
( 'trace' ) LEVEL_AS_INT=5 ;;
|
|
( 'debug' ) LEVEL_AS_INT=4 ;;
|
|
( 'warn' ) LEVEL_AS_INT=2 ;;
|
|
( 'error' ) LEVEL_AS_INT=1 ;;
|
|
( * ) LEVEL_AS_INT=3 ;;
|
|
esac
|
|
|
|
case "${1}" in
|
|
( 'trace' )
|
|
[[ ${LEVEL_AS_INT} -ge 5 ]] || return 0
|
|
MESSAGE+=" ${LOG_LGRAY}TRACE "
|
|
;;
|
|
|
|
( 'debug' )
|
|
[[ ${LEVEL_AS_INT} -ge 4 ]] || return 0
|
|
MESSAGE+=" ${LOG_LBLUE}DEBUG "
|
|
;;
|
|
|
|
( 'info' )
|
|
[[ ${LEVEL_AS_INT} -ge 3 ]] || return 0
|
|
MESSAGE+=" ${LOG_BLUE}INF "
|
|
;;
|
|
|
|
( 'warn' )
|
|
[[ ${LEVEL_AS_INT} -ge 2 ]] || return 0
|
|
MESSAGE+=" ${LOG_LYELLOW}WARNING "
|
|
;;
|
|
|
|
( 'error' )
|
|
[[ ${LEVEL_AS_INT} -ge 1 ]] || return 0
|
|
MESSAGE+=" ${LOG_RED}ERROR " ;;
|
|
|
|
( * )
|
|
echo "Call to '_log' with invalid log level argument '${1}'" >&2
|
|
return 1
|
|
;;
|
|
esac
|
|
|
|
MESSAGE+="${LOG_RESET}] ${2}"
|
|
|
|
if [[ ${1} =~ ^(warn|error)$ ]]
|
|
then
|
|
echo -e "${MESSAGE}" >&2
|
|
else
|
|
echo -e "${MESSAGE}"
|
|
fi
|
|
}
|
|
|
|
# Still used by `check-for-changes.sh` for legacy / test purposes. Adjusting
|
|
# `check-for-changes.sh` must be done with great care and requires some effort.
|
|
# As a consequence, this function is kept to keep some of the original log for
|
|
# `check-for-changes.sh` for tests to pass.
|
|
function _notify
|
|
{
|
|
{ [[ -z ${1:-} ]] || [[ -z ${2:-} ]] ; } && return 0
|
|
|
|
local RESET LGREEN LYELLOW LRED RED LBLUE LGREY LMAGENTA
|
|
|
|
RESET='\e[0m' ; LGREEN='\e[92m' ; LYELLOW='\e[93m'
|
|
LRED='\e[31m' ; RED='\e[91m' ; LBLUE='\e[34m'
|
|
LGREY='\e[37m' ; LMAGENTA='\e[95m'
|
|
|
|
case "${1}" in
|
|
'tasklog' ) echo "-e${3:-}" "[ ${LGREEN}TASKLOG${RESET} ] ${2}" ;;
|
|
'warn' ) echo "-e${3:-}" "[ ${LYELLOW}WARNING${RESET} ] ${2}" ;;
|
|
'err' ) echo "-e${3:-}" "[ ${LRED}ERROR${RESET} ] ${2}" ;;
|
|
'fatal' ) echo "-e${3:-}" "[ ${RED}FATAL${RESET} ] ${2}" ;;
|
|
'inf' ) [[ ${DMS_DEBUG} -eq 1 ]] && echo "-e${3:-}" "[[ ${LBLUE}INF${RESET} ]] ${2}" ;;
|
|
'task' ) [[ ${DMS_DEBUG} -eq 1 ]] && echo "-e${3:-}" "[[ ${LGREY}TASKS${RESET} ]] ${2}" ;;
|
|
* ) echo "-e${3:-}" "[ ${LMAGENTA}UNKNOWN${RESET} ] ${2}" ;;
|
|
esac
|
|
|
|
return 0
|
|
}
|