我经常遇到.NET框架中的项目,这些项目很少或没有关于如何使用这些功能的代码示例。在其他场合,有很多例子,但似乎没有一个像规定的那样工作。
例证:System.Diagnostics.ConsoleTraceListener类。
从我读过的所有内容和我见过的每个代码示例,当我做的事情如下:
ConsoleTraceListner listener = new ConsoleTraceListener();
listener.WriteLine("Yo");
...我应该看到一个控制台窗口弹出“Yo”。然而,不是那个预期的输出,而是将“Yo”写入Visual Studio输出,在那里可以看到正常的跟踪/调试消息。
我尝试过每次尝试使用Google搜索的示例,包括相应侦听器的配置文件设置,将侦听器添加到Trace.Listeners集合,自定义ConsoleTraceListener类型等等。我甚至只编译到发行版版本并运行可执行文件(绝对没有任何作用)。
我错过了什么?
答案 0 :(得分:6)
回答你对Orion Adrian的回答的评论......
ConsoleTraceListenter
或任何 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之类的“oomph”进行日志记录,但跟踪是一个良好的开端。
答案 1 :(得分:3)
即使按照上面的建议定义了TRACE
,只有在使用/target:exe
创建可执行文件时,才会显示控制台跟踪信息。即作为控制台可执行如果它是使用/target:winexe
创建的,则没有可用的控制台,因此ConsoleTraceListener
没有跟踪输出。