【问题标题】:Implementing reliable log实现可靠的日志
【发布时间】:2016-04-12 09:54:35
【问题描述】:

我需要实现可靠的日志文件。我想确定,数据在服务方法中保存或不保存到磁盘(原子性)。服务应该保持高度的并行性。如何实施最有效的方式?方法FileStream.Flush(true) 非常慢。方法FileStream.Write 不保证将数据保存到磁盘。

【问题讨论】:

  • 如果您的应用程序死机或断电,则无法保证写入磁盘。日志是一个已解决的问题,所以不要浪费时间编写自己的新日志库。去一个现有的包。我喜欢NLog,但这是建议,不允许这样做。
  • 我投票结束,因为这个帖子看起来像是变成了“图书馆推荐”的建议,并且会吸引固执己见的答案。
  • @spender 很好,但要求图书馆推荐是题外话。就选择哪个库来解决特定问题给出建议就可以了。
  • 只需使用已有的:Event Tracing for Windows (ETW)。它可以按照您喜欢的任何方式进行配置。它可以动态启用/禁用,例如,您可以在正在运行的系统中记录日志。

标签: c# .net windows io


【解决方案1】:

不要重新发明轮子。使用现有的、经过验证的且受信任的实现,例如 Log4Net https://logging.apache.org/log4net/download_log4net.cgi

【讨论】:

  • Log4Net 是值得信赖的,它运行得非常好并且得到了支持。它只是需要一些时间来习惯配置它,但它是值得的。
猜你喜欢
  • 1970-01-01
  • 2011-06-23
  • 2013-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多