エラー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