feature/logger #2

Merged
swg merged 3 commits from feature/logger into main 2024-02-17 22:36:03 +00:00
2 changed files with 156 additions and 2 deletions

View File

@@ -8,12 +8,18 @@ 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. 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_for_extension ./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. For multiple extensions (or other parts of the file name to match) space separate the list, like shown above.
## Clean up ## Clean up
Cleaning up in a script and exit with a given exit code. Cleaning up in a script and exit with a given exit code.
@@ -27,3 +33,39 @@ For testing the function call the script with:
``` ```
clean_up.sh test 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!
```
For testing the function call the script with just:
```
logger.sh
```

112
logger.sh Executable file
View File

@@ -0,0 +1,112 @@
# 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