多线程、多平台环境中的跟踪-使用log4j和UNIX命令来挖掘跟踪数据 - 编程入门网
递给代码。除了定义首选的布局外,它还指定了同时使用控制台日志 和 日 志文件。日志文件被设置为仅增长到 1000 KB;届时,旧的日志将变成 example.log.1,同时创建新的日志。您可以使用 MaxBackupIndex 参数来指定 要 保留的历史日志数量。这是非常容易使用的;最好的是,您可以在以后改变配置 文件以适应自己的需要,而无需改动代码。
如果使用清单 3 中的配置文件来运行 log4j,结果将输出如下:
这样就为您提供了一个日期戳、日志记录级别指标、线程 ID、当前所在的行 号,以及日志消息。然而,正如您可能猜想得那样,所使用的线程号仅在单个 JVM 内才是唯一的。当您将每次 JVM 运行所产生的跟踪数据分离开来时,这是 很 理想的;但是如果您希望查看同时在单独的 JVM 中运行的多个实例,那么添加 另 一个唯一的 ID 来确保您没有把线程弄乱,这样将是有帮助的。为此,一种简单 的方法就是仅在派生某个线程时才生成一个随机数,并将该随机数追加到所有输 出行上。 然而,您可能认为这样是不必要的,并且只会给跟踪输出添加更多混乱,因 为 您必须将该随机数作为一个参数传递给被调用的程序。(如果不希望传入一个参 数,您可以添加一个方法,客户机可以使用该方法来查询被调用程序的线程 ID 。 这样您至少有了将客户机线程与被调用线程联系起来的途径。虽然这样做并不容 易,但是不失为一种有效的办法。) 我个人认为,不仅只是运行多个线程,而 且 还要完成客户机程序的一个单独实例,然后就能够将所有客户机跟踪与后端的活 动联系起来,或许还可以将客户机信息组合到一个文件中,这样将是有帮助的。 向执行线程分配随机数将帮助您实现这个目的。因而在这个例子中,我将使用这 种随机数技术。(后面我还将展示这种技术所允许的一些很棒的事情。) 有了这个附加的内容,典型的跟踪输出将类似如下: [Thread-1] 是 JVM 线程 ID,它是当您调用 Thread.currentThread.getName() 时所得到的内容。 [-992285010] 就是您的 随 机数。它(我希望如此)在跟踪的范围内将是唯一的,而线程 ID 和随机数的组 合应该能够满足跨越多个 JVM 的唯一性。 多线程、多平台环境中的跟踪-使用log4j和UNIX命令来挖掘跟踪数据(4)时间:2011-09-07 ibm例子应用程序 现在是该引入一些例子来展示产生前述内容的基本调用的时候了。在这个例 子 场景中,一个多线程的客户机应用程序从每个线程调用一个 EJB 组件 log1Bean 。 相应地,这个 bean 又对位于一个不同的服务器上的第二个 EJB 组件 log2Bean 发出调用。通过这种方式,您可以让代码在三台机器上针对多个线程 运 行。这样做的目的是准确跟踪每个阶段究竟发生了什么事情。 正如您可以看到的,我们最终将面对一个在其中执行跟踪的相当复杂的环境 。 当时还是让我们不厌其烦地到达那一步吧。清单 4 是针对客户机代码的第一个 步 骤。它是一个实现 Runnable 接口的类,并运行一些除了使用 log4j 外,其他 什 么也不做的线程。(注意我对所有代码例子使用了 Eclipse 开发环境。我已在 参考资料小节中包括了一些指向 Eclipse 和 Eclipse 插件的链接。) 清单 4. 使用 log4j 的简单客户机类
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |