mirror of
https://github.com/docker-mailserver/docker-mailserver.git
synced 2025-07-22 03:34:38 +02:00
scripts: new log (#2493)
* 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
This commit is contained in:
parent
d8d4b6a189
commit
24031ae365
19 changed files with 367 additions and 221 deletions
|
@ -1,5 +1,100 @@
|
|||
#! /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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue