为什么DbgView缺少一些跟踪写入,但可以在测试运行器中看到跟踪

时间:2011-11-03 15:26:06

标签: debugging enterprise-library postsharp

有人可以解释为什么DbgView错过了我的一些跟踪写入吗?

我正在使用Enterprise Library 5.0日志记录块,其中跟踪侦听器派生自EntLib CustomTraceListener,如下所示......

[ConfigurationElementType(typeof(CustomTraceListenerData))]
public class DebugTraceListener : CustomTraceListener
{
    public override void Write(string message)
    {
        Debug.Write(message);
    }

    public override void WriteLine(string message)
    {
        Debug.WriteLine(message);
    }

    public override void TraceData(TraceEventCache eventCache, string source, 
                                 TraceEventType eventType, int id, object data)
    {
        if (data is LogEntry && Formatter != null)
        {
            WriteLine(Formatter.Format(data as LogEntry));
        }
        else
        {
            WriteLine(data.ToString());
        }
    }
}

我可以看到VS2010中的Resharper测试运行器和NUnit GUI测试器中的所有跟踪。

我还可以将跟踪发送到平面文件侦听器,这会捕获所有跟踪写入, 但是当我使用DbgView (以及TraceSpy)时,只会显示部分跟踪

另一个问题是,我正在使用PostSharp将日志记录作为方面添加,通过属性,而不是直接在业务代码中

1 个答案:

答案 0 :(得分:2)

我已经看到,当您运行另一个应用程序时,也会捕获部分调试流量。如果您正在运行一个应用程序并让VS2010调试某个组件,您将看不到任何调试输出被路由到IDE而不是DebugView。如果您同时在同一个盒子上测试客户端 - 服务器应用程序,但这可能会导致您描述的问题,这可能很方便。除此之外,我还要确保从Capture菜单中检查Capture Global Win32(我已经看到即使我没想到它也会有所作为)。

丢失的消息总是相同的吗?