[英]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.