快速业务通道

多线程、多平台环境中的跟踪-使用log4j和UNIX命令来挖掘跟踪数据 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
ccessfully 2004-01-25 18:18:28,585 INFO [Thread-5]   (SampleCode.java:92) - [-1756513822] Program Running 2004-01-25 18:18:28,586 INFO [Thread-5]  (SampleCode.java:98) - [- 1756513822] Obtaining Initial context

多线程、多平台环境中的跟踪-使用log4j和UNIX命令来挖掘跟踪数据(9)

时间:2011-09-07 ibm

突然之间,所有那些时间戳把一切都安排得有序了——或者说它们至少应该 这 样。这个时候您可以弄清用于运行测试的机器是否全都与该时间一致,并且如果 运气好的话,您还会进一步了解把来自多个平台的跟踪数据放到一块的复杂性。 如果明显看出系统的时间不同步,那么我建议您研究一下可用于同步它们的各种 可用途径(请参阅 参考资料以获得链接)。如果没有事情似乎在错误的时间发 生 ,那么尝试弄清跟踪数据中发生了什么是相当困难的。

因此现在您有一个包含形形色色的内容的巨大清单(按年代顺序排列)。您 可 以逐个地扫描其中的每项内容,但是所谓的“易于阅读”很难实现。例如,编号 为 24 的线程究竟发生了什么事情呢?您希望完全扫描一遍该文件来弄清楚吗? 下面让我们尝试一种更容易的方法:

cat *.log | grep Thread-24

这个命令将显示客户机的第 24 个线程产生的输出。现在您可能认识到添加 唯 一的线程 ID 是一个多好的主意。当然,必须通过一个参数将它传递给 EJB 组 件 是一件痛苦的事情,但是现在您能够容易地将它挑选出来( <id> 代表随 机 ID 编号):

cat *.log | sort | grep <id>

就像是魔力一样,您得到了第 24 个线程所触发的完整执行路径的有序输出 , 它看起来应该类似清单 8。您可以看到它是在 log1Bean 处停止还是继续,并且 您不必对混乱的其他跟踪点排序。

清单 8. 第 24 个线程所触发的完整执行路径

example.log:2004-01-25 18:18:50,445 INFO [Thread-24]   (SampleCode.java:92) - [-1242473967] Program Running example.log:2004-01-25 18:18:50,446 INFO [Thread-24]   (SampleCode.java:98) - [-1242473967] Obtaining Initial context example.log:2004-01-25 18:18:50,521 INFO [Thread-24]   (SampleCode.java:103) - [-1242473967] Narrowing home interface for log1Bean example.log:2004-01-25 18:18:50,522 INFO [Thread-24]   (SampleCode.java:109) - [-1242473967] Calling Create on log1Home example.log:2004-01-25 18:18:50,535 INFO [Thread-24]   (SampleCode.java:114) - [-1242473967] Execution ran sucesfully examplelog2bean.log:2004-01-25 18:18:50,528 INFO [ORB.thread.pool : 0]  (log1Bean.java:65) - [-1242473967] Started doTest method in log1Bean examplelog2bean.log:2004-01-25 18:18:50,529 DEBUG [ORB.thread.pool : 0]  (log1Bean.java:69) - [- 1242473967] Random choice is 5 examplelog2bean.log:2004-01-25 18:18:50,530 INFO [ORB.thread.pool : 0]  (log2Bean.java:60) - [- 1242473967] Started doTest method in log2Bean examplelog2bean.log:2004-01-25 18:18:50,531 INFO [ORB.thread.pool : 0]  (log2Bean.java:61) - [-1242473967] Path ends in Log2Bean examplelog2bean.log:2004-01-25 18:18:50,531 INFO [ORB.thread.pool : 0]  (log1Bean.java:91) - [-1242473967] Execution ran sucesfully

注意每行中的第一部分信息指出了该行所来自的文件。

下面让我们看看您可以使用跟踪信息来做的一些更灵活的事情。请尝试执行 以 下命令:

cut -d ''['' -f3 example.log | cut -d '']'' -f1 | uniq

这个命令将提取运行期间所使用的所有唯一 ID。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号