c# – 如何保存控制台应用程序的输出

前端之家收集整理的这篇文章主要介绍了c# – 如何保存控制台应用程序的输出前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要关于如何让C#控制台应用程序通过标准输出用户显示文本的建议,同时仍然可以访问它.我想实现的实际功能是在程序执行结束时将整个输出缓冲区转储到文本文件.

当我没有找到更清洁的方法时,我使用的解决方法是将TextWriter子类化覆盖写入方法,以便他们都可以写入文件调用原始的stdout writer.这样的事情

public class DirtyWorkaround {
  private class DirtyWriter : TextWriter {
    private TextWriter stdoutWriter;
    private StreamWriter fileWriter;

    public DirtyWriter(string path,TextWriter stdoutWriter) {
      this.stdoutWriter = stdoutWriter;
      this.fileWriter = new StreamWriter(path);
    }

    override public void Write(string s) {
      stdoutWriter.Write(s);

      fileWriter.Write(s);
      fileWriter.Flush();
    }

    // Same as above for WriteLine() and WriteLine(string),// plus whatever methods I need to override to inherit
    // from TextWriter (Encoding.Get I guess).
  }

  public static void Main(string[] args) {
    using (DirtyWriter dw = new DirtyWriter("path",Console.Out)) {
      Console.SetOut(dw);

      // Teh codez
    }
  }
}

看到它一直写入和刷新文件.我只想在执行结束时才做,但是找不到任何方式访问输出缓冲区.

另外,以上代码的借口不准确(不得不写得特别,抱歉).

解决方法

完美的解决方案是使用 log4net与控制台追加器和文件追加器.还有很多其他appender可用.它还允许您在运行时关闭和打开不同的附加程序.

猜你在找的C#相关文章