同时在控制台和文件上写文本

Ill*_*kyi 3 c# console logging stream

古腾标签!问题是:我有一些代码通过Console终端(命令行窗口)上的类打印一些文本消息.我需要将这些信息放在两个"容器"中 - 终端和文本文件.有没有办法将输出流添加到Console类中,以使其不仅在终端上输出数据?这将会是炉排,如果我不会需要改变现有的代码太多(有那里有很多的地方Console.Write()Console.WriteLine()被使用).

iam*_*lin 8

这不是一个完整的实现,但它应该足以让你开始沿着你寻求的道路前进.

class Program
    {
        static void Main(string[] args)
        {
            DualOut.Init();
            Console.WriteLine("Hello");


            Console.ReadLine();
        }
    }

    public static class DualOut
    {
        private static TextWriter _current;

        private class OutputWriter : TextWriter
        {
            public override Encoding Encoding
            {
                get
                {
                    return _current.Encoding;
                }
            }

            public override void WriteLine(string value)
            {
                _current.WriteLine(value);
                File.WriteAllLines("Output.txt", new string[] { value });
            }
        }

        public static void Init()
        {
            _current = Console.Out;
            Console.SetOut(new OutputWriter());
        }
    }
Run Code Online (Sandbox Code Playgroud)

如果运行此代码,您将看到"Hello"打印到控制台和文件"Output.txt"