从跟踪获取ElapsedTime

时间:2012-04-23 06:30:50

标签: c# enterprise-library logging-application-block

我正在为MS Enterprise Library - Logging Application block尝试hands on labs

通过添加一个Trace,我在'flat file'监听器上收到一条'消息',上面写着:“ 消息:结束跟踪:活动'6455494c-0602-45c9-8a10-052cdd39e5cb'方法' EnoughPI.Calc.Calculator.Calculate'at at 767616631287998 ticks(经过时间:10.292秒)

我是否也可以从追踪中“单独”获取经过的时间,或者说已经过去的时间。

谢谢,

1 个答案:

答案 0 :(得分:1)

API不会在公共接口上公开计时信息。您可以使用反射来获取信息,但这样做是由您自担风险的(因为它取决于可能发生变化的内部实现):

using (Tracer tracer = new Tracer("General"))
{
    FieldInfo fieldInfo = typeof(Tracer).GetField("stopwatch", BindingFlags.NonPublic | BindingFlags.Instance);
    var sw = fieldInfo.GetValue(tracer) as Stopwatch;
    Console.WriteLine(sw.ElapsedMilliseconds);
}

另一种方法是编写自己的Tracer实现(基于企业库代码),该实现公开您感兴趣的任何属性。