我经常在 .NET Framework 中遇到很少或没有关于如何使用这些功能的代码示例的项目。在其他情况下,有很多示例,但似乎都没有按规定工作。
恰当的例子:System.Diagnostics.ConsoleTraceListener 类。
根据我阅读的所有内容和看到的每个代码示例,当我执行以下操作时:
ConsoleTraceListner listener = new ConsoleTraceListener();
listener.WriteLine("Yo");
...我应该会看到一个带有“Yo”的控制台窗口弹出。但是,它不是那个预期的输出,而是将“Yo”写入 Visual Studio 输出,在那里人们会看到正常的跟踪/调试消息。
我已经尝试了我在 Google 上搜索过的示例的每一次迭代,包括相应监听器的配置文件设置、将监听器添加到 Trace.Listeners 集合、自定义 ConsoleTraceListener 类型等。我什至刚刚编译为发布版本并运行可执行文件(绝对什么都不做)。
我到底错过了什么?
最佳答案
回答您对 Orion Adrian 的回答的评论...
ConsoleTraceListenter
或 any TraceListener
的重点不是直接调用它 - 而是将它添加到跟踪监听器集合中,所以您的其余代码只需调用 Trace.Write
等。例如:
using System;
using System.Diagnostics;
class Test
{
static void Main()
{
ConsoleTraceListener listener = new ConsoleTraceListener();
Trace.Listeners.Add(listener);
DoSomething();
Trace.Flush();
}
static void DoSomething()
{
DoSomethingElse();
}
static void DoSomethingElse()
{
// We don't want to have to pass all our logging
// baggage down this far
Trace.WriteLine("In DoSomethingElse");
}
}
在定义 TRACE 的情况下编译它,您就可以简单地将日志记录到控制台。就我个人而言,我更喜欢使用更多“魅力”进行日志记录,例如 log4net ,但追踪是一个好的开始。
关于.net - 为什么 ConsoleTraceListener 不写入控制台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/982746/