chore: colorize warning and error logs

This commit is contained in:
Ivan Dyachkov 2022-12-07 14:25:37 +01:00
parent 9e1b3fb47e
commit ec826f03c9
1 changed files with 35 additions and 33 deletions

View File

@ -46,14 +46,17 @@ export PROGNAME="erl"
export ERTS_LIB_DIR="$RUNNER_ROOT_DIR/lib"
DYNLIBS_DIR="$RUNNER_ROOT_DIR/dynlibs"
# Echo to stderr on errors
echoerr() {
echo -e "$*" 1>&2;
logerr() {
echo -e "$(tput setaf 1)ERROR: $*$(tput sgr0)" 1>&2
}
logwarn() {
echo "$(tput setaf 3)WARNING: $*$(tput sgr0)"
}
die() {
set +x
echoerr "ERROR: $1"
logerr "$1"
errno=${2:-1}
exit "$errno"
}
@ -101,7 +104,7 @@ usage() {
echo "This command is applicable when EMQX is started in daemon mode."
echo "It attaches the current shell to EMQX's control console"
echo "through a named pipe."
echo "WARNING: try to use the safer alternative, remote_console command."
logwarn "try to use the safer alternative, remote_console command."
;;
remote_console)
echo "Start an interactive shell running an Erlang or Elixir node which "
@ -324,19 +327,19 @@ if [ "$IS_BOOT_COMMAND" = 'yes' ]; then
if ! (echo -e "$COMPATIBILITY_INFO" | grep -q 'BEAM_OK'); then
## not able to start beam.smp
set +x
echoerr "$COMPATIBILITY_INFO"
echoerr "Please ensure it is running on the correct platform:"
echoerr "$BUILD_INFO"
echoerr "Version=$REL_VSN"
echoerr "Required dependencies: openssl-1.1.1 (libcrypto), libncurses and libatomic1"
logerr "$COMPATIBILITY_INFO"
logerr "Please ensure it is running on the correct platform:"
logerr "$BUILD_INFO"
logerr "Version=$REL_VSN"
logerr "Required dependencies: openssl-1.1.1 (libcrypto), libncurses and libatomic1"
exit 1
elif ! (echo -e "$COMPATIBILITY_INFO" | grep -q 'CRYPTO_OK'); then
## not able to start crypto app
set +x
echoerr "$COMPATIBILITY_INFO"
logerr "$COMPATIBILITY_INFO"
exit 2
fi
echoerr "Using libs from '${DYNLIBS_DIR}' due to missing from the OS."
logerr "Using libs from '${DYNLIBS_DIR}' due to missing from the OS."
fi
[ "$DEBUG" -eq 1 ] && set -x
fi
@ -344,7 +347,7 @@ fi
# Warn the user if ulimit -n is less than 1024
ULIMIT_F=$(ulimit -n)
if [ "$ULIMIT_F" -lt 1024 ]; then
echo "WARNING: ulimit -n is ${ULIMIT_F}; 1024 is the recommended minimum."
logwarn "ulimit -n is ${ULIMIT_F}; 1024 is the recommended minimum."
fi
SED_REPLACE="sed -i "
@ -480,10 +483,10 @@ if [ "$EKKA_PROTO_DIST_MOD" = 'inet_tls' ]; then
# there is unfortunately no way to support space for this option because we'd need to grep
# from 'ps -ef' result to get this option for non-boot commands (nodetool) to run
set +x
echoerr "Got space in: $SSL_DIST_OPTFILE"
echoerr "No space is allowed for Erlang distribution over SSL option file path."
echoerr "Configure it from environment variable EMQX_SSL_DIST_OPTFILE."
echoerr "Or make sure emqx root path '$RUNNER_ROOT_DIR' has no space"
logerr "Got space in: $SSL_DIST_OPTFILE"
logerr "No space is allowed for Erlang distribution over SSL option file path."
logerr "Configure it from environment variable EMQX_SSL_DIST_OPTFILE."
logerr "Or make sure emqx root path '$RUNNER_ROOT_DIR' has no space"
exit 1
;;
*)
@ -515,9 +518,9 @@ check_license() {
call_nodetool check_license_key "$key_license"
else
set +x
echoerr "License not found."
echoerr "Please specify one via the EMQX_LICENSE__KEY variable"
echoerr "or via license.key in emqx-enterprise.conf."
logerr "License not found."
logerr "Please specify one via the EMQX_LICENSE__KEY variable"
logerr "or via license.key in emqx-enterprise.conf."
return 1
fi
}
@ -604,8 +607,7 @@ is_down() {
if ps -p "$PID" | grep -q 'defunct'; then
# zombie state, print parent pid
parent="$(ps -o ppid= -p "$PID" | tr -d ' ')"
echo "WARNING: $PID is marked <defunct>, parent:"
ps -p "$parent"
logwarn "$PID is marked <defunct>, parent: $(ps -p "$parent")"
return 0
fi
return 1
@ -660,11 +662,11 @@ latest_vm_args() {
echo "$vm_args_file"
else
set +x
echoerr "Node not initialized?"
echoerr "Generated config file vm.*.args is not found for command '$COMMAND'"
echoerr "in config dir: $CONFIGS_DIR"
echoerr "In case the file has been deleted while the node is running,"
echoerr "set environment variable '$hint_var_name' to continue"
logerr "Node not initialized?"
logerr "Generated config file vm.*.args is not found for command '$COMMAND'"
logerr "in config dir: $CONFIGS_DIR"
logerr "In case the file has been deleted while the node is running,"
logerr "set environment variable '$hint_var_name' to continue"
exit 1
fi
}
@ -694,7 +696,7 @@ tr_log_to_env() {
# value not set, do nothing
;;
*)
echoerr "Unknown environment value for EMQX_LOG__TO=${log_to} discarded"
logerr "Unknown environment value for EMQX_LOG__TO=${log_to} discarded"
;;
esac
}
@ -769,16 +771,16 @@ if [ -z "$COOKIE" ]; then
fi
[ -z "$COOKIE" ] && COOKIE="$EMQX_DEFAULT_ERLANG_COOKIE"
if [ $IS_BOOT_COMMAND = 'yes' ] && [ "$COOKIE" = "$EMQX_DEFAULT_ERLANG_COOKIE" ]; then
echoerr "WARNING: Default (insecure) Erlang cookie is in use."
echoerr "WARNING: Configure node.cookie in $EMQX_ETC_DIR/emqx.conf or override from environment variable EMQX_NODE__COOKIE"
echoerr "NOTE: Use the same config value for all nodes in the cluster."
logwarn "Default (insecure) Erlang cookie is in use."
logwarn "Configure node.cookie in $EMQX_ETC_DIR/emqx.conf or override from environment variable EMQX_NODE__COOKIE"
logwarn "Use the same config value for all nodes in the cluster."
fi
## check if OTP version has mnesia_hook feature; if not, fallback to
## using Mnesia DB backend.
if [[ "$IS_BOOT_COMMAND" == 'yes' && "$(get_boot_config 'node.db_backend')" == "rlog" ]]; then
if ! (echo -e "$COMPATIBILITY_INFO" | grep -q 'MNESIA_OK'); then
echoerr "DB Backend is RLOG, but an incompatible OTP version has been detected. Falling back to using Mnesia DB backend."
logerr "DB Backend is RLOG, but an incompatible OTP version has been detected. Falling back to using Mnesia DB backend."
export EMQX_NODE__DB_BACKEND=mnesia
export EMQX_NODE__DB_ROLE=core
fi
@ -852,7 +854,7 @@ case "${COMMAND}" in
logger -t "${REL_NAME}[${PID}]" "STOP: $msg"
# log to user console
set +x
echoerr "Stop failed, $msg"
logerr "Stop failed, $msg"
echo "ERROR: $PID is still around"
ps -p "$PID"
exit 1