多线程、多平台环境中的跟踪-使用log4j和UNIX命令来挖掘跟踪数据 - 编程入门网
多线程、多平台环境中的跟踪-使用log4j和UNIX命令来挖掘跟踪数据时间:2011-09-07 ibm简介:大多数 Java 程序员都使用某种跟踪系统来跟踪开发中的代码的潜在 错 误和问题。然而,多线程和多平台环境可能产生大量莫名其妙的跟踪数据。在本 文中,软件工程师 Daniel Would 提供了一些技巧,帮助您理解复杂应用程序中 产生的跟踪数据。您将了解如何使用开放源代码的日志记录软件包 log4j 来生 成 包含丰富信息的日志文件。您还将看到如何使用标准 UNIX shell 命令来挖掘您 需要的信息数据。 Scott Clee 在“ Use a consistent trace system for easier debugging ” 一文中向您展示了如何在自定义的类中跟踪和进行日志记录,从而提供跨越所有 应用程序的一致跟踪方法。这种方法对于运行在单个线程上的单独应用程序很理 想,但是当情况变得更复杂时,您很快就会发现自己面对着一大堆跟踪数据,对 如何跟踪实际发生的事情毫无线索。 成功的跟踪需要两个要素。第一个要素是输出有用的足够信息。第二个要素 是 以您能够获得所需信息的方式输出信息。毕竟,您可能会输出一大堆整体上无法 阅读和不可理解的数据。 因而,本文将划分为两个部分:一个部分集中于产生 跟 踪数据,另一个部分集中于以特定方式查询结果信息。 在日志/跟踪方面,您有两个选择。您当然可以采用“自行设想”的技术;也 可以采用预先准备好的支持类(专有的和免费的均可),后者提供了广泛的功能 。免费实现的一个例子就是 log4j;它已得到很好的证明、快速并且通用。它提 供了全面的基础结构和易于理解的配置。因而,我选择了它作为本文例子的基础 。在本文中,我将指导您使用 log4j,并将它应用于一个多线程、多平台的工作 例子。 Log4j 很容易设置:您所需做的就是向应用程序的每个部分提供 log4j JAR 文件,从而开始日志记录(请参阅 下载和安装 log4j)。log4j 的使用已在其 文 档中作了说明,还有一些文章研究了它的基本用法(请参阅 参考资料 以获得相 关链接)。在本文中,我将讨论在复杂环境中进行日志记录时需要考虑的事情, 并展示如何在一个工作例子的环境中最有效地使用 log4j 中提供的功能。我还 将 展示如何在收集到日志信息之后挖掘信息。即使拥有世界上最好的计划,在一个 大型日志文件中查找所需要的信息也可能仍然是一个耗时和棘手的过程。 为什么多线程很复杂? 如果程序同时运行在多个线程上,每个线程的日志信息可能会交织在一起。 凡 是尝试过从 15 个交织的线程的输出中读取信息的人都明白我所指的是什么!此 外,代码还可能经常运行在多台机器上的分布式系统中。如果对所有组件使用相 同的跟踪系统,您将被迫协调系统的多个输出,从而可能面临内部时钟不同步的 风险。(这最后一个问题实在是一件麻烦事情。设想这样的情况,您读取整个跟 踪信息,却没有意识到客户端机器上的时间戳整整要比服务器上的对应时间戳早 20 秒!) 清单 1 是单个程序产生的跟踪信息的一个例子,该程序使用简单的输出来运 行,输出中使用了时间戳和消息。它非常类似您采用自行设计的日志记录基础结 构时可能看到的输出。 清单 1. 一个简单应用程序的跟踪信息
多线程、多平台环境中的跟踪-使用log4j和UNIX命令来挖掘跟踪数据(2)时间:2011-09-07 ibm这看起来似乎全都很简单。但是现在看一下清单 2,它显示了应用程序扩展 至 同时运行五个线程时所发生的情况。 清单 2. 一个多线程应用程序的跟踪信息
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |