2016-10-04 43 views
0

我有一個控制檯應用程序,它通過Console.Writeline執行大量日誌記錄屏幕。將控制檯應用程序屏幕的所有行復制到文本文件中

短期每個Console.Writeline轉換爲文件的寫入,或緩衝每個console.WritelineStringBuilder的,

有沒有辦法在應用程序運行到拿控制檯屏幕線完全轉儲到一個文本文件結束?

+1

簡單的方法:application.exe >> log.txt的 – Backtrack

+0

您可以創建一個字符串列表,當您通過Console.Writeline寫入控制檯時,在此行之後,您還可以將其添加到列表中,並在程序結束時獲得包含您的所有輸出的列表現在可以在程序結束時寫入。 –

+0

@ Cal-cium,仍然需要我瀏覽整個代碼,並向每個控制檯添加更多代碼。打印線 –

回答

3

您可以:

1重定向Console.WriteLine到一個文件:

System.IO.FileStream fs = new System.IO.FileStream(@"C:\Output.txt", System.IO.FileMode.Create); 
System.IO.StreamWriter sw = new System.IO.StreamWriter(fs); 
System.Console.SetOut(sw); 

(PS。如果你這樣做,不要忘記設置Co nsole輸出背部和關閉流的程序結束前)

2 - 當運行可執行文件,直接輸出到文件,例如:

C:\>MyExecutable.exe > C:\Output.txt 
+0

第二個選項是最簡單的。無需修改代碼 –

1
FileStream ostrm; 
      StreamWriter writer; 
      TextWriter oldOut = Console.Out; 
      try 
      { 
       ostrm = new FileStream("./Redirect.txt", FileMode.OpenOrCreate, FileAccess.Write); 
       writer = new StreamWriter(ostrm); 
      } 
      catch (Exception e) 
      { 
       Console.WriteLine("Cannot open Redirect.txt for writing"); 
       Console.WriteLine(e.Message); 
       return; 
      } 
      Console.SetOut(writer); 
      Console.WriteLine("This is a line of text"); 
      Console.WriteLine("Everything written to Console.Write() or"); 
      Console.WriteLine("Console.WriteLine() will be written to a file"); 
      Console.SetOut(oldOut); 
      writer.Close(); 
      ostrm.Close(); 
      Console.WriteLine("Done"); 

使用可以使用Console.SetOut()設置輸出

很好的例子:http://www.java2s.com/Code/CSharp/Development-Class/DemonstratesredirectingtheConsoleoutputtoafile.htm

+0

這基本上可以說是逐一編寫屏幕日誌。多數民衆贊成我想避免 –

+0

這將需要我搜索'Console.Writeline'到處,然後添加'Console.SetOut' –

+1

@CharlesOkwuagwu,不,你不必搜索所有的Console.Writeline和添加Console.SetOut 。在主要或全球添加它 – Backtrack

相關問題