在C#控制台应用程序中,是否有一种智能方法可以将控制台输出镜像到文本文件中?
目前我只是将相同的字符串传递给两个Console.WriteLine和InstanceOfStreamWriter.WriteLine一个日志方法.
我需要有关如何让我的C#控制台应用程序通过标准输出向用户显示文本的建议,同时仍然可以在以后访问它.我想实现的实际功能是在程序执行结束时将整个输出缓冲区转储到文本文件中.
我使用的解决方法,虽然我找不到更清晰的方法是子类TextWriter重写写入方法,所以他们都会写入文件并调用原始的stdout编写器.像这样的东西:
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 …Run Code Online (Sandbox Code Playgroud)