From 683115b8186a377688d01d7874b1ff67bfdd5aa1 Mon Sep 17 00:00:00 2001 From: Stephan Date: Wed, 22 Nov 2023 23:12:47 +0100 Subject: [PATCH 1/3] Example of a logger. --- logger.sh | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100755 logger.sh diff --git a/logger.sh b/logger.sh new file mode 100755 index 0000000..130ff1c --- /dev/null +++ b/logger.sh @@ -0,0 +1,51 @@ +# 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=$LLDebug + +## Name of the logging script +Log_Name="myscript"; + +## 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 "$Log_Name ${_now}${_type} ${_log_message}\n"; + fi +} + +function test() { + echo $DATE +} + +DATE=$(which date); + +Run_Date=$($DATE +%Y_%m_%d) +Log_File="/tmp/${Run_Date}_${Log_Name}.log"; + + +test -- 2.47.3 From 3db5c7fd0f6aae67d38abc4ca4846bbe7e4f7271 Mon Sep 17 00:00:00 2001 From: Stephan Date: Wed, 22 Nov 2023 23:30:56 +0100 Subject: [PATCH 2/3] Logger descripiton. --- README.md | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index bcf9550..e3c6248 100644 --- a/README.md +++ b/README.md @@ -10,10 +10,11 @@ The [check_folder_for_extension test folder](cffe_test) contains of 13 files, 12 function call: ``` -check_folder_for_extension ./cffe_test "*.jpg *.JPG" +check_folder ./cffe_test "*.jpg *.JPG" ``` For multiple extensions (or other parts of the file name to match) space separate the list, like shown above. + ## Clean up Cleaning up in a script and exit with a given exit code. @@ -27,3 +28,34 @@ For testing the function call the script with: ``` clean_up.sh test ``` + +## Logger + +[Logger](logger.sh) to write messages with individual levels to a file. + +In level *debug* all logged messages are printed to stdout, too. + +Log levels are + +5 LLDebug, *for exceptionally verbose messages, also on std out* + +4 LLInfo, *informative messages* + +3 LLWarning, *warning messages* + +2 LLError, *error messages* + +1 LLMdtry and *mandatory messages to get minimal info in a log file* + +0 LLMute *really nothing gets written* + +The higher the level set in `$Log_Level` to the logger, the more verbose it gets. + +``` +logger $LLWARNING "This is my message"; +``` +produces the following message in the log file: + +``` +logger 20231122_22:43:19 Warning: This is my message! +``` -- 2.47.3 From 5350db8dc34c4545537a2ca7da38c8af136fa70d Mon Sep 17 00:00:00 2001 From: swg Date: Fri, 24 Nov 2023 23:02:09 +0100 Subject: [PATCH 3/3] Five tests for logger with result check. --- README.md | 14 +++++++++-- logger.sh | 75 +++++++++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 80 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index e3c6248..f9557d3 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,14 @@ Checks a given folder for certain file extensions recursively. All found files w The [check_folder_for_extension test folder](cffe_test) contains of 13 files, 12 of them images, which should be found by the test. -function call: +Function call: ``` -check_folder ./cffe_test "*.jpg *.JPG" +check_folder $my_folder $extension_list +``` + +To test the function call: +``` +check_folder_for_extension.sh ./cffe_test "*.jpg *.JPG" ``` For multiple extensions (or other parts of the file name to match) space separate the list, like shown above. @@ -59,3 +64,8 @@ produces the following message in the log file: ``` logger 20231122_22:43:19 Warning: This is my message! ``` + +For testing the function call the script with just: +``` +logger.sh +``` diff --git a/logger.sh b/logger.sh index 130ff1c..2d0b928 100755 --- a/logger.sh +++ b/logger.sh @@ -6,10 +6,10 @@ LLWarning=3 LLInfo=4 LLDebug=5 ## Actual log level of the logger used -Log_Level=$LLDebug +Log_Level=$LLInfo -## Name of the logging script -Log_Name="myscript"; +## base name of the logging script. +Log_Name="${0##*/}"; ## Write log of the script. ## $1 Loglevel to log the message with. @@ -34,18 +34,79 @@ function logger() { fi printf "$Log_Name ${_now}${_type} ${_log_message}\n" >> $Log_File; if [[ $Log_Level -eq $LLDebug ]]; then - printf "$Log_Name ${_now}${_type} ${_log_message}\n"; + printf "${_now}${_type} ${_log_message}\n"; fi } function test() { - echo $DATE + 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="/tmp/${Run_Date}_${Log_Name}.log"; - +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 -- 2.47.3