用于日志记录的 TextWriterTraceListener 或 StreamWriter?

asd*_*sdf 2 c# performance

我正在尝试决定是使用 TextWriterTraceListener 还是 StreamWriter 来写入日志文件。在我工作的公司中,有些人使用其中一种,有些人使用另一种,但没有人能给我解释两者之间的真正区别。我也对这个问题做了一些研究,但没有人很好地解释这些差异。我知道 TextWriterTraceListener 可以在不实际打开文件的情况下实例化,这似乎比 StreamWriter 更有优势。

我很好奇人们对此有何看法/了解?一个比另一个快吗?是否可以更好地处理文件锁定?为什么选择其中之一?

Ree*_*sey 5

的主要优点TextWriterTraceListener是它允许您打开或关闭日志记录而无需重新编译。您可以使用日志记录(通过跟踪调用)部署应用程序,并更改配置以包含TraceWriterTraceListenervia app.Config。

在内部,它只是将跟踪日志调用路由到 a TextWriter,因此在性能等方面没有任何改进。这更多的是灵活性问题。

如果性能至关重要,最好使用 ETW 事件而不是 .NET 跟踪写入机制或文件 IO。有关详细信息,请参阅有关用 C# 记录 ETW 事件的教程。Windows 事件跟踪 (ETW) 为事件日志记录提供了一种令人难以置信的高性能机制,可以根据需要在运行时为特定应用程序启用和禁用该机制(并与其他 ETW 源结合使用)。