LINUXSHELL抓取错误日志脚本下载

任何程序运行起来免不了产生很多日志,其中错误日志需要最为关心的。在某些时候会将错误日志和正常日志分开,但我们的系统却没有这么做。更麻烦的是,每个小时存储一个日志文件,所以每次为了查找当天是否有错误信息需要打开N个文件,而且知识兔不能用grep因为需要把整个堆栈抓取下来。 SHELL本人对shell完全是初学,磕磕碰碰写了个脚本。主要逻辑是判断ERROR的日志级别的那一行开始记录,直到碰到下一个INFO或者DEBUG的日志级别行。 #!/bin/bash isInErrorBlock=false strArray=()count=1  while read line do   #echo “Line $count:”   arrayIdx=$count%10   strArray[$count]=”$line”      idx=$(expr match “${strArray[$count]}” “.*ERROR”)    if [ $idx -le 0 ];   thenidx=$(expr match “${strArray[$count]}” “.*Exception*”)   fi     idx2=$(expr match “${strArray[$count]}” “.*DEBUG”)   idx3=$(expr match “${strArray[$count]}” “.*INFO”)     if [ $idx -gt 0 ] ;   thenif ! $isInErrorBlock;then echo 'print out previous lines'isInErrorBlock=trueecho ${strArray[$count]} fi   elseif [ $idx2 -gt 0 ] || [ $idx3 -gt 0 ] ; thenisInErrorBlock=falseelseif $isInErrorBlock;thenecho ${strArray[$count]} fi fi   fi   count=$[ $count+1 ]done #echo “finish” exit 0 效果基本达到了要求,对于每个目录 cat *log | sh find_error.sh 能够将整个堆栈单独输出到一个文件。但是效率很慢,不知道如何才能提高SHELL的运行效率。  本文来自系统大全为您分享如需转载请注明!推荐win10下载

下载仅供下载体验和测试学习,不得商用和正当使用。

下载体验

请输入密码查看下载!

如何免费获取密码?

点击下载

评论