- 论坛徽章:
- 0
|
想要的效果是: 截取日志段,并取前面20行,再加后面20行,代码如下,效率超低!请达人帮忙修改一下:
#!/bin/bash
start=20
end=20
logfile=temp.txt
rs=rs.`date +%Y%m%d_%H%M%S`.txt
# script start
unset a
unset b
unset c
unset var1
unset var2
a=`cat -n $logfile |awk '{if($0 ~ /Exception/){print $1}}'`
c=`awk 'END{print NR}' $logfile`
for i in $a;do
if(($i<=$start));then
var1=1
else
var1=$(($i-$start))
fi
while [ $i ];do
i=$(($i+1))
b=`awk '{if($0 ~/^[0-9A-Za-z]/){if(NR=='$i')print NR}}' $logfile`
if [ -z $b ] ; then
continue
else
var2=$(($b+$end))
if(($var2 > $c));then
var2=$c
fi
break
fi
done
sed -n "$var1,${var2}p" $logfile 1>>$rs
echo ..................................... 1>>$rs
done
日志文件片段如下,红色为我想匹配的代码段,再附加上前20行后20行,以Exception作为关键字:
INFO: Jk running ID=1 time=0/18 config=null
Jul 6, 2009 5:06:05 PM org.apache.catalina.storeconfig.StoreLoader load
INFO: Find registry server-registry.xml at classpath resource
Jul 6, 2009 5:06:05 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 3246 ms
17:07:05,137 DEBUG ManagerBase:677 - Start expire sessions StandardManager at 1246871225137 sessioncount 0
17:07:05,138 DEBUG ManagerBase:685 - End expire sessions StandardManager processingTime 1 expired sessions: 0
17:07:56,804 DEBUG GuiceRpcServlet:49 - begin processCall!
17:07:56,813 ERROR [guiceService]:260 - Servlet.service() for servlet guiceService threw exception
com.google.gwt.user.client.rpc.InvocationException: please login!
at jsw.crm.server.util.GuiceRpcServlet.doUnexpectedFailure(GuiceRpcServlet.java:104)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost(RemoteServiceServlet.java:115)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:18
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:54
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:10
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:52
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:619)
Caused by: jsw.crm.client.NotLoginException: user not login!
at jsw.crm.server.util.GuiceRpcServlet.getLoginUser(GuiceRpcServlet.java:32)
at jsw.crm.server.util.GuiceRpcServlet.processCall(GuiceRpcServlet.java:50)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost(RemoteServiceServlet.java:102)
... 17 more
17:08:05,142 DEBUG ManagerBase:677 - Start expire sessions StandardManager at 1246871285142 sessioncount 1
17:08:05,142 DEBUG ManagerBase:685 - End expire sessions StandardManager processingTime 0 expired sessions: 0
17:08:05,310 DEBUG GuiceRpcServlet:49 - begin processCall!
17:08:05,311 ERROR GuiceRpcServlet:102 - rpc service error!
[ 本帖最后由 hidinga 于 2009-7-10 13:30 编辑 ] |
|