628*_*426 7 .net c# trace system.diagnostics
以下程序不会打印文本"This is a trace".没有app.config.
我的问题是,如何修改以下代码(只有代码,而不是任何配置文件),以便在调用t.TraceEvent时传递的消息出现在控制台窗口中
using System;
using System.Collections.Generic;
using System.Diagnostics;
namespace ConsoleApplication1 {
class Program {
static void Main(string[] args) {
Trace.Listeners.Add(
new TextWriterTraceListener(Console.Out)
);
TraceSource t = new TraceSource("Test");
t.Listeners.AddRange(Trace.Listeners);
t.TraceEvent(TraceEventType.Critical, 1, "This is a trace");
Console.Write("Press enter to quit");
Console.ReadLine();
}
}
}
Run Code Online (Sandbox Code Playgroud)
请参阅跟踪侦听器.
该DefaultTraceListener会写入到输出窗口.要将消息发送到TraceListener,您只需要调用Trace.WriteLine("my output string");.
// C#
System.Diagnostics.Trace.Listeners.Clear();
System.Diagnostics.Trace.Listeners.Add(
new System.Diagnostics.TextWriterTraceListener(Console.Out));
Run Code Online (Sandbox Code Playgroud)
编辑:为响应您的评论,以下代码将在控制台窗口中的"按Enter退出"之前立即打印"我的输出字符串":
static void Main(string[] args)
{
Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));
Trace.WriteLine("my output string");
Console.Write("Press enter to quit");
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
编辑2:在重新阅读你的问题之后,我意识到你特意尝试使用TraceSource,在这种情况下你只需要设置Switch,这样它就知道应该将哪个级别的跟踪事件发送到控制台窗口.添加侦听器后尝试添加此内容:
SourceSwitch sourceSwitch = new SourceSwitch("SourceSwitch", "Verbose");
t.Switch = sourceSwitch;
Run Code Online (Sandbox Code Playgroud)