如果这已经得到回答,我很抱歉,我已经尽力看。
我有一个将一些信息写入控制台的库。在使用该库的应用程序中,我想将该输出重定向到控件和日志文件,同时在每行的开头写入时间戳。这是我的课的样子:
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();
}
有什么建议么?
谢谢你的帮助!