有人可以解释为什么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将日志记录作为方面添加,通过属性,而不是直接在业务代码中
答案 0 :(得分:2)
我已经看到,当您运行另一个应用程序时,也会捕获部分调试流量。如果您正在运行一个应用程序并让VS2010调试某个组件,您将看不到任何调试输出被路由到IDE而不是DebugView。如果您同时在同一个盒子上测试客户端 - 服务器应用程序,但这可能会导致您描述的问题,这可能很方便。除此之外,我还要确保从Capture菜单中检查Capture Global Win32(我已经看到即使我没想到它也会有所作为)。
丢失的消息总是相同的吗?