# Log levels for messages LLMute=0 LLMdtry=1 # mandatory: messages that are always written to the log (except mute) LLError=2 LLWarning=3 LLInfo=4 LLDebug=5 ## Actual log level of the logger used Log_Level=$LLInfo ## base name of the logging script. Log_Name="${0##*/}"; ## Write log of the script. ## $1 Loglevel to log the message with. ## $2 message to log. function logger() { local _logging_level=$1; local _log_message=$2; if [[ $Log_Level -lt $_logging_level ]]; then return; fi local _now=$($DATE +%Y%m%d_%H:%M:%S); if [[ $_logging_level -eq $LLInfo ]]; then _type=" Info:"; elif [[ $_logging_level -eq $LLError ]]; then _type=" ERROR!"; elif [[ $_logging_level -eq $LLWarning ]]; then _type=" Warning:"; elif [[ $_logging_level -eq $LLDebug ]]; then _type=" DEBUG:"; else _type=":"; fi printf "$Log_Name ${_now}${_type} ${_log_message}\n" >> $Log_File; if [[ $Log_Level -eq $LLDebug ]]; then printf "${_now}${_type} ${_log_message}\n"; fi } function test() { printf "Running tests for logger().\n"; local _exit_val=0; # Test log level mute: no logfile should be created! Log_Level=$LLMute; logger $LLMdtry "In level mute nothing should be logged!"; if [ -e "$Log_File" ]; then # the logfile should not exist! ((_exit_val+=1)) printf "logger() test on log level Mute: FAILED!\n"; rm $Log_File; else printf "logger() test on log level Mute: OK.\n"; fi # Test log level Mdtry, but log with level error: still no logfile should be created! Log_Level=$LLMdtry; logger $LLError "In level Mdtry an error should not be logged!"; if [ -e "$Log_File" ]; then # the logfile should not exist! ((_exit_val+=1)) printf "logger() test on log level Mandatory; logging an error happend, so test FAILED!\n"; rm $Log_File; else printf "logger() test on log level Mandatory: when logging an error failed: test OK.\n"; fi # Test log level Info, but log with level error: logfile should be created! Log_Level=$LLInfo; logger $LLError "In level Info an error should be logged!"; if [ -e "$Log_File" ]; then # the logfile should now exist. printf "logger() test on log level Info: logging an error succeeded, test OK.\n"; rm $Log_File; else ((_exit_val+=1)) printf "logger() test on log level Info: logging an error FAILED!\n"; fi # Test log level Info, but log with level debug: logfile should not be created! Log_Level=$LLInfo; logger $LLDebug "In level Info a debug message should not be logged!"; if [ -e "$Log_File" ]; then # the logfile should not exist. ((_exit_val+=1)) printf "logger() test on log level Info: logging a debug message succeeded, so test FAILED!\n"; rm $Log_File; else printf "logger() test on log level Info: logging a debug message failed: test OK.\n"; fi # Test log level Debug, but log with level debug: logfile should be created! Log_Level=$LLDebug; logger $LLDebug "In level Debug a debug message should be logged. ALso the message should appaer on std out."; if [ -e "$Log_File" ]; then # the logfile should not exist. printf "logger() test on log level Debug: logging a debug message succeeded, so test OK.\n"; rm $Log_File; else ((_exit_val+=1)) printf "logger() test on log level Debug: logging a debug message failed: test FAILED!\n"; fi return $_exit_val; } DATE=$(which date); Run_Date=$($DATE +%Y_%m_%d) Log_File="${Run_Date}_${Log_Name}.log"; test if [ $? -eq 0 ]; then printf "All test succeeded.\n"; else printf "$? of 5 tests FAILED!\n"; fi