我如何实现一个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();
}
有什么建议吗?
谢谢你的帮助!
这可能是因为xmlDoc被接收为包含NewLine的单个字符串。
尝试将xmlDoc作为纯文本文件读取,并将该文本逐行发送到控制台