Console.SetOut到StreamWriter,不断写入文本文件

时间:2010-02-24 15:09:51

标签: c# logging streamwriter console.out.writeline console.setout

我正在使用Console.SetOut方法将我的所有Console.Out.WriteLines写入文件,这样可行。唯一的问题是,当我关闭应用程序时它只会将所有内容写入文本文件,而不是每当Console.Out.WriteLine发生时都写入。 关于如何实现这一点的任何想法?

我是怎么做到的: 在Application.Run();

之前
FileStream writerOutput = new FileStream("Logging_Admin.txt", FileMode.Append, FileAccess.Write);
StreamWriter writer = new StreamWriter(writerOutput);
Console.SetOut(writer);

在Application.Run()之后:

writer.Dispose();

感谢。

4 个答案:

答案 0 :(得分:13)

StreamWriter具有AutoFlush属性。设置为true时,您应该得到所需的结果。

答案 1 :(得分:11)

StreamWriter默认会缓冲其内容。如果要刷新缓冲区,则必须调用Flush方法:

  

清除当前编写器的所有缓冲区,并将所有缓冲的数据写入基础流。

答案 2 :(得分:1)

如果您不想每次手动调用flush,您可能需要考虑实现自己的TextWriter派生对象来为您执行此操作。

答案 3 :(得分:0)

要刷新缓冲区,您可以这样做     writer.Close();