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 ;)