用于日志记录的TextWriterTrackListener或StreamWriter

本文关键字:StreamWriter TextWriterTrackListener 日志 记录 用于 | 更新日期: 2023-09-27 18:21:39

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

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

用于日志记录的TextWriterTrackListener或StreamWriter

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

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

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