使用ETW登录备份文件

时间:2015-10-30 06:30:56

标签: c# logging etw

有什么方法可以使用 Microsoft.Diagnostic.Tracing.EventSource 包或任何其他.NET内置类型来实现日志记录的备份逻辑?

我使用 EventSession 将所有日志定向到.ETL文件,但这有两个问题:

  • 最重要的一点是,根据我的理解,当处理停止时,日志实际上被写入文件。但是如果机器关闭或处理器进程被杀死会发生什么?从我的测试中,日志丢失了。

  • 第二个问题不那么重要,只是当我的解决方案能够在日志进入时从文件中读取它会更方便。

基本上我想为我的日志提供一个文件缓冲区,我想知道是否有一些内置的实现特别是为此。

1 个答案:

答案 0 :(得分:1)

  • 是的,EventSource的WriteEvent方法没有阻塞,所以他们这样做 不保证实际上已保存日志。
  • 是的,你做不到 在使用时读取ETL文件。
在这种情况下,ETW不是你的选择,你可以使用普通的TraceSource(有两个监听器,一个配置为自动刷新,另一个是ETW适配器,你可以通过实时ETW会话)或log4net(你可以选择适用于你的情况的appender)。