快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
代码中。您只需把对 System.out.println() (或您用于 输出跟踪数据的其他任何机制)的调用替换为对相应 log4j 方法的调用。

您应该记录可能会遇到的尽可能多的内容。当您真正进入调试过程时,不可 避 免会希望获得您无法获得的那一部分信息。如果性能是一个问题,那就应该谨慎 考虑所记录的内容以及如何记录它。Log4j 提供了一些关于其性能影响的文档, 以及如何改进性能的方法。一般来讲,打开日志记录时的性能和关闭日志记录时 的性能之间是一种折中关系。

需要记录的有用信息如下:

方法的入口/出口

入口处的变量值

在何处对外发出调用(对于远程调用)

每个远程调用之前和之后的时间(时间戳可以显示该调用花了多长时间)

每个线程的开始和结束

请使用以下命令行来运行具有几个线程的示例代码:

java demo.logger.sample.SampleCode 10

您将看到自己得到了简洁的输出块。每个线程的输出独立于其他线程的输出 , 因为在执行期间没有可用于分割时间选择的办法。当您开始进行第一次 EJB 查 找 时,这种情况将会改变。

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

时间:2011-09-07 ibm

添加 EJB 组件

现在您将创建客户机将要调用的 EJB 组件。它们将做一些非常有限的处理。 第一个 bean 将基于一个随机数做出是否调用第二个 bean 的选择。因而,其中 一些线程将调用第二个 bean,而有些却不会这样。这样将会给跟踪输出添加一 些 变化,从而说明这种技术的强大能力。

要做的第一件事情是在一个系统属性中设置日志记录器。设置方法将因为用 于 部署 EJB 组件的服务器不同而异。我选择了一个名为 log4j.prop 的设置;这 个 设置指向一个包含此设置的文件。这对于您正在创建的两个 EJB 组件都是一样 的 。

清单 5 包含了第一个示例 EJB 组件。

注意这些清单是不完整的:我删除了所有的空方法( ejbRemove() ,等等) 。显然,您需要那些方法才能执行代码,但是这里列出它们没有意义。

清单 5. log1Bean

package demo.logger.sample; /** * Bean implementation class for Enterprise Bean: log1 */ import java.rmi.RemoteException; import java.util.Properties; import java.util.Random; import javax.naming.InitialContext; import javax.rmi.PortableRemoteObject; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; public class log1Bean implements javax.ejb.SessionBean {   private static Logger logger = Logger.getLogger(log1Bean.class);   private static String ejbHomeLocation = "ejb/log2Home";   private javax.ejb.SessionContext mySessionCtx;     /**   * ejbCreate   */   public void ejbCreate() throws javax.ejb.CreateException {    //    //pickup the location of the property file as a system property    //     Properties sp = System.getProperties();    String propFile = sp.getProperty("log4j.props");    PropertyConfigurator.configure (propFile);    logger.info("Logger started for log1Bean, bean created");    String ejbHomeLocation = sp.getProperty ("log2.jndi");   }       public boolean doTest(int id)   {   //this method takes the id of the thread that called it to continue use in its own logging   //it will roll a random number, and choose to lookup another EJB or not     boolean result = true;     logger.info("[" +id +"]"+ " Started doTe

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号