chore: colorize warning and error logs
This commit is contained in:
parent
9e1b3fb47e
commit
ec826f03c9
68
bin/emqx
68
bin/emqx
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue