2016-11-28 59 views
0

我寫了一個使用TCP IP的控制檯程序,我現在正在64位機器中進行調試。 程序在屏幕服務器和輸出連接東西OK(直到我調試錯誤發生) 我想記錄這些屏幕輸出,所以我做控制檯程序結果到文本文件

>theProgram.exe > screenrecord.txt

爲管道。這個以前運行良好,但由於某種原因現在,程序以這種方式運行時,雖然連接到網絡現在只接收0字節(由於我永遠不知道這個「0字節」是什麼意思,我指出了文檔在此情況下模糊不清)

爲什麼此管道可能會影響TCP IP的行爲? 什麼是派生輸出到文本文件的方法?

有沒有辦法將這些輸出到一個文本文件在屏幕上同時看到它們?

+0

您可以提供更多信息,例如例外 –

+0

這個程序被標記爲C#,我假設你已經創建了該程序。爲什麼不只是添加調試模塊到文件中?你可以自己寫或使用一些現有的(例如:[Log4NET](https://csharp.today/log4net-tutorial-great-library-for-logging/))。 – Tatranskymedved

+0

@Transranskymedved謝謝,請您詳細介紹一下添加模塊? – KansaiRobot

回答

0

控制檯一次只能輸出到1個設備。 Console.SetOut方法將輸出指向另一個設備,如您的screenrecord.txt.如您所示,>theProgram.exe > screenrecord.txt執行時不會在屏幕上顯示任何輸出。 Console.SetOut也是一樣,因爲它被重定向到一個文件,它不會顯示在控制檯中。下面的代碼取自MS Console.SetOut Method (TextWriter)

下面顯示了一種可以將控制檯輸出重定向到文件的方法。在此代碼中... ScreenRecord.txt將保存在項目的調試文件夾中,或者也可以設置路徑。

希望這會有所幫助。

static void Main(string[] args) 
{ 
    Console.WriteLine("Start Of Main - output not redirected yet!"); 
    FileStream fs = new FileStream("ScreenRecord.txt", FileMode.Create); 
    // First, save the standard output. 
    TextWriter tmp = Console.Out; 
    StreamWriter sw = new StreamWriter(fs); 
    Console.SetOut(sw); 
    Console.WriteLine("this writes to file 1"); 
    printStuff(); 
    Console.SetOut(tmp); 
    Console.WriteLine("this line not in file"); 
    Console.ReadKey(); 
    sw.Close(); 
} 

private static void printStuff() 
{ 
    for (int i = 1; i < 7; i++) 
    Console.WriteLine("printStuff " + i); 
} 
相關問題