Como salvar a saída de um aplicativo de console

Preciso de conselhos sobre como o meu aplicativo de console em C # exiba texto para o usuário através da saída padrão e ainda assim possa acessá-lo posteriormente. O recurso real que eu gostaria de implementar é despejar todo o buffer de saída em um arquivo de texto no final da execução do program

A solução alternativa que utilizo enquanto não encontro uma abordagem mais limpa é a subclasseTextWriter substituindo os métodos de gravação para que ambos gravem em um arquivo e chamem o escritor stdout original. Algo assim

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
    }
  }
}

Veja se ele grava e libera o arquivo o tempo todo. Adoraria fazer isso apenas no final da execução, mas não consegui encontrar nenhuma maneira de acessar o buffer de saíd

Além disso, desculpe imprecisões com o código acima (tive que escrevê-loAd ho, Desculpe ;)

questionAnswers(6)

yourAnswerToTheQuestion