我有一个控制台应用程序,通过Console.Writeline
进行大量日志记录。
没有将每个Console.Writeline
转换为文件写入,或者将每个console.Writeline
缓存到StringBuilder
,
有一种方法可以在应用程序运行到最后时将控制台屏幕行完全转储到文本文件中吗?
答案 0 :(得分: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。如果您这样做,请不要忘记设置控制台输出并在程序终止前关闭流)
2-运行可执行文件时,将输出定向到文件,例如:
C:\>MyExecutable.exe > C:\Output.txt
答案 1 :(得分: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");
use可以使用Console.SetOut()
来设置输出