CI: Fix check-logs.sh

This script has a few issues:

* It catches false positives, due to log levels in config options.

* It doesn't fail on CRITICAL logs, due to variable reset issue.

This change fixes these.

Change-Id: I50c859eb2991e498eeb64bca45daf1e6f237761f
This commit is contained in:
Mark Goddard 2019-09-20 11:24:51 +01:00
parent ec8437205e
commit bfd8ee1978

View File

@ -3,24 +3,32 @@
# Check for CRITICAL, ERROR or WARNING messages in log files. # Check for CRITICAL, ERROR or WARNING messages in log files.
set -o errexit set -o errexit
set -o pipefail
# Enable unbuffered output for Ansible in Jenkins. # Enable unbuffered output for Ansible in Jenkins.
export PYTHONUNBUFFERED=1 export PYTHONUNBUFFERED=1
function check_file_for_level {
# $1: file
# $2: log level
# Filter out false positives from logged config options.
sudo egrep " $2 " $1 | egrep -v "(logging_exception_prefix|rate_limit_except_level)"
}
any_critical=0
for level in CRITICAL ERROR WARNING; do for level in CRITICAL ERROR WARNING; do
all_file=/tmp/logs/kolla/all-${level}.log all_file=/tmp/logs/kolla/all-${level}.log
any_matched=0 any_matched=0
any_critical=0
echo "Checking for $level log messages" echo "Checking for $level log messages"
for f in $(sudo find /var/log/kolla/ -type f); do for f in $(sudo find /var/log/kolla/ -type f); do
if sudo egrep "^.* .* .* $level" $f >/dev/null; then if check_file_for_level $f $level >/dev/null; then
any_matched=1 any_matched=1
if [[ $level = CRITICAL ]]; then if [[ $level = CRITICAL ]]; then
any_critical=1 any_critical=1
fi fi
echo $f >> $all_file echo $f >> $all_file
sudo egrep "^.* .* .* $level" $f >> $all_file check_file_for_level $f $level >> $all_file
echo >> $all_file echo >> $all_file
fi fi
done done