2424# 1. Log activities
2525#
2626# You must/might inform the parameters below:
27- # 1.
28- # 2. [optional] (default: false)
27+ # 1. [optional] (default: /var/log) Destination path
28+ # 2. [optional] (default: basescript.log) Log's file name
29+ # 3. [optional] (default: +%Y-%m-%d %H:%M:%S) Timestamp log
30+ # 4. [optional] (default: true) Allow to run with sudo
31+ # 5. [optional] (default: false) Stop execution on error
32+ #
33+ # [CAUTION] The optional argument replaces previously set parameter as of:
34+ # 1. BASESCRIPT_LOG_BASE_PATH
35+ # 2. BASESCRIPT_LOG_FILE_NAME
36+ # 3. BASESCRIPT_LOG_TIMESTAMP_FLAG
37+ # 4. ALLOW_RUN_WITH_SUDO
38+ # 5. LOCAL_STOP_EXECUTION_ON_ERROR
2939#
3040# -----------------------------------------------------------------------
3141
3242log ()
3343{
34- local LOCAL_LOG_BASE_PATH LOCAL_LOG_NAME LOCAL_TIMESTAMP_FLAG LOCAL_TIMESTAMP LOCAL_LOG_FULL_PATH
44+ # Local arguments
45+ local LOCAL_LOG_BASE_PATH LOCAL_LOG_NAME LOCAL_TIMESTAMP_FLAG LOCAL_TIMESTAMP LOCAL_LOG_FULL_PATH LOCAL_STOP_EXECUTION_ON_ERROR LOCAL_ALLOW_RUN_WITH_SUDO LOCAL_RUN_WITH_SUDO
3546
36- LOCAL_LOG_BASE_PATH=${BASESCRIPT_LOG_BASE_PATH:- " /var/log" }
37- LOCAL_LOG_NAME=${BASESCRIPT_LOG_FILE_NAME:- basescript.log}
38- LOCAL_TIMESTAMP_FLAG=${BASESCRIPT_LOG_TIMESTAMP_FLAG:- " +%Y-%m-%d %H:%M:%S" }
47+ # Optional arguments
48+ LOCAL_LOG_BASE_PATH=" ${1:- null} " && [[ " $LOCAL_LOG_BASE_PATH " == " null" ]] && LOCAL_LOG_BASE_PATH=${BASESCRIPT_LOG_BASE_PATH:- " /var/log" }
49+ LOCAL_LOG_NAME=" ${2:- null} " && [[ " $LOCAL_LOG_NAME " == null ]] && LOCAL_LOG_NAME=${BASESCRIPT_LOG_FILE_NAME:- basescript.log}
50+ LOCAL_TIMESTAMP_FLAG=" ${3:- null} " && [[ " $LOCAL_TIMESTAMP_FLAG " == null ]] && LOCAL_TIMESTAMP_FLAG=${BASESCRIPT_LOG_TIMESTAMP_FLAG:- " +%Y-%m-%d %H:%M:%S" }
51+ LOCAL_ALLOW_RUN_WITH_SUDO=" ${4:- null} " && [[ " $LOCAL_ALLOW_RUN_WITH_SUDO " == null ]] && LOCAL_ALLOW_RUN_WITH_SUDO=${ALLOW_RUN_WITH_SUDO:- false}
52+ LOCAL_STOP_EXECUTION_ON_ERROR=" ${5:- null} " && [[ " $LOCAL_STOP_EXECUTION_ON_ERROR " == null ]] && LOCAL_STOP_EXECUTION_ON_ERROR=${STOP_EXECUTION_ON_ERROR:- false} # most other scripts this is set to true
3953
54+ # Extra parameters
4055 LOCAL_TIMESTAMP=$( date " $LOCAL_TIMESTAMP_FLAG " )
4156 LOCAL_LOG_FULL_PATH=" ${LOCAL_LOG_BASE_PATH%/ } /$LOCAL_LOG_NAME "
4257
43- echo " $LOCAL_TIMESTAMP USER=$USER SCRIPT=$SCRIPT_PATH /$SCRIPT_NAME LOG='" $@ " '" | sudo tee -a $LOCAL_LOG_FULL_PATH > /dev/null
58+ # Allows 'sudo' to run this function if destination path it's not owned by the current user
59+ if [[ " $LOCAL_ALLOW_RUN_WITH_SUDO " == true ]]; then
60+ LOCAL_RUN_WITH_SUDO=sudo
61+ else
62+ LOCAL_RUN_WITH_SUDO=" " # Set to empty!
63+
64+ # Check if file exist and users permissions
65+ if [[ -f ${LOCAL_LOG_FULL_PATH} && ! -w ${LOCAL_LOG_FULL_PATH} ]] || [[ -d ${LOCAL_LOG_BASE_PATH} && ! -w ${LOCAL_LOG_BASE_PATH} ]]; then
66+ if [[ ! $( declare -F echoerror) == " " ]]; then
67+ echoerror " You dont have permission to write log at '${LOCAL_LOG_FULL_PATH} ' - [${FUNCNAME[0]} ]" " ${LOCAL_STOP_EXECUTION_ON_ERROR} "
68+ else
69+ echo " You dont have permission to write log at '${LOCAL_LOG_FULL_PATH} ' - [${FUNCNAME[0]} ]"
70+ [[ " $LOCAL_STOP_EXECUTION_ON_ERROR " == true ]] && exit 1
71+ fi
72+ fi
73+ fi
74+
75+ # Executa comando ou retornar erro
76+ if ! echo " $LOCAL_TIMESTAMP USER=$USER SCRIPT=$SCRIPT_PATH /$SCRIPT_NAME LOG=$* " | $LOCAL_RUN_WITH_SUDO tee -a " ${LOCAL_LOG_FULL_PATH} " > /dev/null 2>&1 ; then
77+ if [[ ! $( declare -F echoerror) == " " ]]; then
78+ echoerror " Logs could not be saved at '${LOCAL_LOG_FULL_PATH} ' - [${FUNCNAME[0]} ]" " ${LOCAL_STOP_EXECUTION_ON_ERROR} "
79+ else
80+ echo " Logs could not be saved at '${LOCAL_LOG_FULL_PATH} ' - [${FUNCNAME[0]} ]"
81+ [[ " $LOCAL_STOP_EXECUTION_ON_ERROR " == true ]] && exit 1
82+ fi
83+ fi
4484}
4585
86+ # Implement test case
87+ # BASESCRIPT_LOG_BASE_PATH="/log"
88+ # log $*
0 commit comments