[英]Writing C# debug output to .txt file
使用跟蹤。 它旨在滿足您的需求。
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();
}
}
使用開箱即用跟蹤的最靈活的解決方案是制作一個應用程序配置文件來定義跟蹤偵聽器。
<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 文章。
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");
你將不得不做這樣的事情:
// 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();
取自這里。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.