Chinaunix

标题: 日志分析|日志抽取 [打印本页]

作者: chancelai    时间: 2012-08-26 23:06
标题: 日志分析|日志抽取
各位兄弟姐妹好,小弟请教大家个问题:


我想要的效果是把web请求时间大于某个值的日志截取出来,方便开发人员查看哪个方法引起系统缓慢,方便开发调优。

文件格式如下(".*"代表省略)
.......
(2012-08-22 09:46:40,431) [STANDBY] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)' WARN .*
(2012-08-22 09:46:56,160) [ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)' INFO .*
java.lang.NullPointerException:.*
        at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
.......
(2012-08-22 09:46:56,161) [ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)' INFO .*
(2012-08-22 09:46:56,134) [ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)' INFO [com.test.ParamFilter] - request_end used 295 ms
......


这里面使我困扰和需要的解决的是
1.把日志按照线程号分割成不同的文本
2.当前行没有线程号则属于上一个线程号的文本
3.分割后如何按照(request_end)这个标志,把抽取连续行

在下不才,只能只能有这水平。。。求指教
awk '{if ($0 ~ ".*request_end used .* ms.*" if($15>10000) {print $0}}'


作者: rdcwayx    时间: 2012-08-27 09:33
本帖最后由 rdcwayx 于 2012-08-27 11:34 编辑
  1. awk '/ExecuteThread.*for queue/{mark=$5}
  2.       {a[mark]=a[mark] RS $0}
  3.       /request_end.*ms/&&$(NF-1)>10000{print a[mark];a[mark]=""}' infile
复制代码

作者: chancelai    时间: 2012-08-27 22:45
{:3_191:} 有点效果出来了

我研究研究

谢谢版主指点


{:3_184:}我很讨厌这验证码




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2