我如何实现一个textwwriter,以便将时间戳附加到写入控制台的每行

本文关键字:时间戳 控制台 实现 何实现 textwwriter 一个 | 更新日期: 2023-09-27 18:11:01

如果已经有人回答了,我很抱歉,我已经尽力去看了。

我有一个向控制台写入一些信息的库。在使用该库的应用程序中,我希望将该输出重定向到控件和日志文件,同时在每行开头写入时间戳。这是我的类的样子:

class TextBoxStreamWriter : TextWriter
{
    TextBox _output;
    FileStream _stream;
    StreamWriter _writer;
    // constructor
    public TextBoxStreamWriter(TextBox output)
    {
        _output = output;
        _stream = new FileStream(@"C:'example.log", FileMode.OpenOrCreate, FileAccess.Write);
        _writer = new StreamWriter(_stream);
        _writer.AutoFlush = true;
    }
    // override methods
    public override void Write(char value)
    {
        base.Write(value);
        _output.AppendText(value.ToString());
        _writer.Write(value);
    }
    public override void WriteLine(string value)
    {
        base.WriteLine(DateTime.Now.ToString("[yyyy/MM/dd HH:mm:ss]'t") + value);
    }

这似乎工作良好,只要你使用Console.WriteLine()当然。但是,如果我尝试将XMLWriter的输出定向到控制台,这将绕过Console.WriteLine(),从而开始打印不带时间戳的行。例如:

    protected void WriteXMLToConsole(XmlDocument xmlDocument)
    {
        XmlTextWriter writer = new XmlTextWriter(Console.Out);
        writer.Formatting = Formatting.Indented;
        xmlDocument.WriteContentTo(writer);
        writer.Flush();
        Console.WriteLine();
    }

有什么建议吗?

谢谢你的帮助!

我如何实现一个textwwriter,以便将时间戳附加到写入控制台的每行

这可能是因为xmlDoc被接收为包含NewLine的单个字符串。
尝试将xmlDoc作为纯文本文件读取,并将该文本逐行发送到控制台