繁体   English   中英

如何实现TextWriter以便将时间戳添加到写入控制台的每一行?

[英]How can I implement a TextWriter in order to append a timestamp to each line writen to the console?

如果已经回答了我,我深表歉意,我已经尽力了。

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

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

有什么建议么?

谢谢你的帮助!

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM