将控制台应用程序屏幕的所有行复制到文本文件

时间:2016-10-04 10:16:32

标签: c# logging console

我有一个控制台应用程序,通过Console.Writeline进行大量日志记录。

没有将每个Console.Writeline转换为文件写入,或者将每个console.Writeline缓存到StringBuilder

有一种方法可以在应用程序运行到最后时将控制台屏幕行完全转储到文本文件中吗?

2 个答案:

答案 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()来设置输出

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