c# - 同时在控制台和文件上写入文本

标签 c# logging stream console

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

最佳答案

这不是一个完整的实现,但它应该足以让您开始您寻求的道路。

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

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

关于c# - 同时在控制台和文件上写入文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32770658/

相关文章:

c# - 删除 1st Index 元素会导致表单不发布其他大于 1st 的索引

Django 日志位置

c# - 如何按 block 读取文件

c# - 在 .NET 中将流(未知长度)转换为字节数组的最佳方法?

c# - 在 HTML5 Canvas /页面中直播音频?

c# - 对象分配

SQL 用于数据记录?

http - 哪个 node.js HTTP 代理实现性能更高?

c# - RegEx 匹配一个模式,只要它前面没有不同的模式

Python - 将表情符号字符写入日志文件