为什么当我试图将控制台输出重定向到一个文件时,我的代码会写一个空白文件

本文关键字:一个 文件 我的 代码 空白 重定向 输出 为什么 控制台 | 更新日期: 2023-09-27 17:57:35

我已经编写了控制台应用程序的"Windows服务"版本。由于控制台不可见,我想将控制台上显示的文本重定向到一个文件。

为此,我编写了以下代码:

private void SetupConsoleLogging()
{
    string logFileName = ConfigurationManager.AppSettings["LogFileName"];
    FileStream fileStream = new FileStream(logFileName, FileMode.OpenOrCreate);
    StreamWriter streamWriter = new StreamWriter(fileStream);
    Console.SetOut(streamWriter);
}

上面的代码是在Windows服务开始时调用的。然而,这只会导致创建一个空白文件。

假设程序中没有错误或其他问题导致它失败(事件查看器中没有显示任何内容),那么是什么阻止了输出写入文件?

为什么当我试图将控制台输出重定向到一个文件时,我的代码会写一个空白文件

也许您可以尝试设置StreamWriter的属性,如下所示:

streamWriter.AutoFlush = true;

它将在调用StreamWriter后将缓冲区刷新到基础流。写

您需要Close(或Flush)您的StreamWriter来写出您的数据:

streamWriter.Close();