用于记录的TextWriterTraceListener或StreamWriter?

时间:2014-09-12 22:36:25

标签: c# performance

我正在尝试决定是使用TextWriterTraceListener还是StreamWriter来编写我的日志文件。在公司,我为一些人工作,有些人使用另一个,但没有人可以向我解释两者之间的真正区别。我也对这个问题进行了一些研究,但是没有人能够很好地解释这些差异。我知道可以在不实际打开文件的情况下实例化TextWriterTraceListener,这似乎可以让它在StreamWriter上占用一席之地。

我很好奇人们对此的看法/了解?一个比另一个快吗?是否更好地处理文件锁定?为什么选择一个而不是另一个?

1 个答案:

答案 0 :(得分:3)

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

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

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