diff --git a/files/error-summary.sh b/files/error-summary.sh index 186d4bf34f94193484f459639763e71a82c6ae91..3c5b23f8d639cf918447975d86d97a087e293d66 100755 --- a/files/error-summary.sh +++ b/files/error-summary.sh @@ -6,8 +6,6 @@ # - Jens Steidl (<Jens.Steidl@slub-dresden.de>) # INVOCATION: # ./error_summary.sh [-h] [-n NUM] [-d DAYS] [-w] [-c] -# KNOWN PROBLEMS: -# - Showing Warnings with "-w" is buggy, use with caution. ### DEFAULTS @@ -26,28 +24,31 @@ fi ### CLI ARGUMENTS -for ARG in "$@"; do - case ${ARG} in +# for ARG in "$@"; do +while [[ $# -gt 0 ]]; do + case ${1} in -h|--help) echo "call help function here" exit 0 ;; -n|--chars) HOW_MANY_CHARS="${2}" - shift; + shift; shift; ;; -d|--days) HOW_MANY_DAYS="${2}" - shift; + shift; shift; ;; -w|--warn) - WARN="|WARN" + COUNT_WARNINGS="true" + shift; ;; -c|--class) - FILTER_STRING=" (ERROR${WARN})\s+\[[^[]*\]" + PRINT_ONLY_CLASSNAMES="true" + shift; ;; *) - echo "'${ARG}' is not a valid parameter. Please use '$( basename "${0}" ) --help'. Exiting." + echo "'${1}' is not a valid parameter. Please use '$( basename "${0}" ) --help'. Exiting." exit 1 ;; esac @@ -55,20 +56,23 @@ done -echo "" -echo "USING THE FOLLOWING SETTINGS:" -echo -e "\tSERVERNAME: '${HOSTNAME}'" -echo -e "\tFILTERING LOGS FROM $( date -d "${HOW_MANY_DAYS} days ago" +%Y-%m-%d ) UNTIL $( date -d today +%Y-%m-%d )" -echo -e "\tHOW MANY CHARACTERS: ${HOW_MANY_CHARS}" -echo -en "\tCOUNT WARNINGS: "; [[ "${WARN}" == "|WARN" ]] && echo "yes" || echo "no" - - - ### FUNCTIONS # thx @Steidl! # grep -o "STARTZEICHENKETTE..\{ANZAHL_ZEICHEN_NACH_STARTZEICHENKETTE\}" | sort | uniq -c | sort -nr +set_filter_string(){ + if [[ "${COUNT_WARNINGS}" == "true" ]]; then + WARN="|WARN" + fi + + if [[ "${PRINT_ONLY_CLASSNAMES}" == true ]]; then + FILTER_STRING=" (ERROR${WARN})\s+\[[^[]*\]" + else + FILTER_STRING=" (ERROR${WARN})\s+\[.{0,${HOW_MANY_CHARS}}" + fi +} + get_last_n_days(){ LOGFILES="$( find "${SERVER_LOG_DIR}/" -maxdepth 1 -mtime -"${HOW_MANY_DAYS}" -name "server.log*" )" for LOGFILE in ${LOGFILES}; do @@ -88,6 +92,15 @@ get_last_n_days(){ ### MAIN +echo "" +echo "USING THE FOLLOWING SETTINGS:" +echo -e "\tSERVERNAME: '${HOSTNAME}'" +echo -e "\tFILTERING LOGS FROM $( date -d "${HOW_MANY_DAYS} days ago" +%Y-%m-%d ) UNTIL $( date -d today +%Y-%m-%d )" +echo -e "\tHOW MANY CHARACTERS: ${HOW_MANY_CHARS}" +echo -en "\tCOUNT WARNINGS: "; [[ "${WARN}" == "|WARN" ]] && echo "yes" || echo "no" + +set_filter_string + echo "" echo "REPORT LAST ${HOW_MANY_DAYS} DAYS:" get_last_n_days