将C#调试输出写入.txt文件

时间:2011-10-28 07:57:56

标签: c# microcontroller .net-micro-framework

我正在使用.NET Micro Framework的微控制器上运行代码,我希望我的调试输出写入文本文件。这是如何工作的?

4 个答案:

答案 0 :(得分:24)

使用Trace。它旨在满足您的需求。

using System;
using System.Diagnostics;

class Test
{
    static void Main()
    {
       Trace.Listeners.Add(new TextWriterTraceListener("yourlog.log"));
       Trace.AutoFlush = true;
       Trace.Indent();
       Trace.WriteLine("Entering Main");
       Console.WriteLine("Hello World.");
       Trace.WriteLine("Exiting Main");
       Trace.Unindent();
       Trace.Flush();
    }
}

答案 1 :(得分:12)

使用开箱即用的跟踪最灵活的解决方案是创建一个定义跟踪侦听器的应用程序配置文件。

<configuration>
  <system.diagnostics>
    <trace autoflush="true">
      <listeners>
        <add name="textListener" 
             type="System.Diagnostics.TextWriterTraceListener" 
             initializeData="trace.log" />
        <remove name="Default" />
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>

然后,在您的应用程序中,只要您想记录某些内容,只需执行以下操作:

Trace.WriteLine("Hello, this is a trace");

但TraceListener类的强大功能在于它的粒度。您可以在错误,信息和警告级别之间进行选择,并为您需要跟踪的任何级别定义不同的日志文件。使用配置文件可以更轻松地在应用程序中禁用跟踪,因为您无需重新编译应用程序。

有关跟踪系统的更多信息,请查看此MSDN article

答案 2 :(得分:9)

Ekk对于Trace是一个更好的设计是正确的,但是这并没有回答这个问题,在没有直接解决方案的情况下会很好。 OP或某人可能继承了一个完全使用Debug的代码库,当时可能不需要Trace。

我找到了这个解决方案[http://bytes.com/topic/c-sharp/answers/273066-redirect-output-debug-writeline]

TextWriterTraceListener[] listeners = new TextWriterTraceListener[] {
new TextWriterTraceListener("C:\\debug.txt"),
new TextWriterTraceListener(Console.Out)
};

Debug.Listeners.AddRange(listeners);

Debug.WriteLine("Some Value", "Some Category");
Debug.WriteLine("Some Other Value");

答案 3 :(得分:0)

你必须做这样的事情:

// Set up listener
string filename = @"C:\listener.txt";
FileStream traceLog = new FileStream(filename, FileMode.OpenOrCreate);
TextWriterTraceListener listener = new TextWriterTraceListener(traceLog);

// Output to listener
listener.WriteLine("Trace message here");

// Flush any open output before termination.
// Maybe in an override of Form.OnClosed.
listener.Flush();

取自here

Another related question