我正在使用 TextWriterTraceListener
将诊断消息记录到文本文件中。但是,我也不想记录添加的每条跟踪消息的时间戳。是否可以为监听器定义一种自动添加时间戳的格式化程序?
目前我在每个 Trace.WriteLine()
调用上手动添加时间戳,但这不是很舒服。
最佳答案
我建议你使用 Log4Net相反,它具有更多的可定制性。
或者,您可以编写自己的 TraceListener
实现来为您设置时间戳。您可能甚至可以从 TextWriterTraceListener
派生并覆盖 Write
和 WriteLine
:
public override void Write(string x)
{
// Use whatever format you want here...
base.Write(string.Format("{0:r}: {1}", DateTime.UtcNow, x));
}
public override void WriteLine(string x)
{
// Use whatever format you want here...
base.WriteLine(string.Format("{0:r}: {1}", DateTime.UtcNow, x));
}
如注释中所述,这会导致 TraceInformation
的日期重复,因为这会调用 Write
两次。使用“正确”的日志框架肯定会更好。
https://stackoverflow.com/questions/1171670/