エラーtailスクリプト


このスクリプトは、今日のログのERROR、Exceptionと昨日のログの比較を実現し、新しいものがあれば赤く表示します.
#!/bin/bash
LOG_DIR='v3/log'
LOG_FILE_PREFIX='v3center'
LOG_FILE_SUFFIEX='log'
LOG_FILE_COMPRESS_TYPE='gz'
LOG_GREP_KEYWORDS='ERROR'
LOG_RE_EXP='s/[0-9]//g'
#source errlogconf
TODAY=`date +'%F'`
TODAY_LOG=$LOG_DIR/$LOG_FILE_PREFIX.$LOG_FILE_SUFFIEX
YESTERDAY=`date -d '1 days ago' +'%F'`
YESTERDAY_COMPRESSED_LOG=$LOG_DIR/$LOG_FILE_PREFIX.$YESTERDAY.$LOG_FILE_SUFFIEX.$LOG_FILE_COMPRESS_TYPE
YESTERDAY_ERR_UNIQ='yesterday.log'

function checkInYesterday(){
    SEDLINE=$1
    cat $YESTERDAY_ERR_UNIQ | while read ULINE
    do
        if [[ "$ULINE" == "$SEDLINE" ]]; then
            return 1
            break
        fi
    done
    return $?
}

function tailLine(){
tail -f  $TODAY_LOG | while read LINE
do
    GREPLINE=`echo $LINE | grep -E "${LOG_GREP_KEYWORDS}"` 
        [ $? != 0 ] && continue
    SEDLINE=`echo $LINE | sed -e "${LOG_RE_EXP}"`
    FOUND=0
    SIZE=`wc -c < $YESTERDAY_ERR_UNIQ`
    if [ $SIZE -eq 0 ]; then
        echo -e "\033[0;31;1m $LINE \033[0m"
    else
        checkInYesterday "$SEDLINE"
        FOUND=`echo $?`
        if [ $FOUND -eq 0 ]; then
            echo -e "\033[0;31;1m $LINE \033[0m"
        else
            echo $LINE
        fi
    fi
done
}

if [ -f  $YESTERDAY_ERR_UNIQ ]; then
    CREATE_DATE=`stat -c %y $YESTERDAY_ERR_UNIQ`
    CREATE_DATE=${CREATE_DATE:0:10}
    if [[ $TODAY -eq $CREATE_DATE ]]; then
        echo "Yesterday error log has alerady exist!"
    else
        echo '      :' $YESTERDAY_COMPRESSED_LOG
        zgrep -E "${LOG_GREP_KEYWORDS}" $YESTERDAY_COMPRESSED_LOG | sed -e "${LOG_RE_EXP}" | sort | uniq > $YESTERDAY_ERR_UNIQ
    fi
else
    echo '      :' $YESTERDAY_COMPRESSED_LOG
    zgrep -E "${LOG_GREP_KEYWORDS}" $YESTERDAY_COMPRESSED_LOG | sed -e "${LOG_RE_EXP}" | sort | uniq > $YESTERDAY_ERR_UNIQ
fi

echo '  Tail    :' $TODAY_LOG
tailLine