【发布时间】:2016-04-12 09:54:35
【问题描述】:
我需要实现可靠的日志文件。我想确定,数据在服务方法中保存或不保存到磁盘(原子性)。服务应该保持高度的并行性。如何实施最有效的方式?方法FileStream.Flush(true) 非常慢。方法FileStream.Write 不保证将数据保存到磁盘。
【问题讨论】:
-
如果您的应用程序死机或断电,则无法保证写入磁盘。日志是一个已解决的问题,所以不要浪费时间编写自己的新日志库。去一个现有的包。我喜欢NLog,但这是建议,不允许这样做。
-
我投票结束,因为这个帖子看起来像是变成了“图书馆推荐”的建议,并且会吸引固执己见的答案。
-
@spender 很好,但要求图书馆推荐是题外话。就选择哪个库来解决特定问题给出建议就可以了。
-
只需使用已有的:Event Tracing for Windows (ETW)。它可以按照您喜欢的任何方式进行配置。它可以动态启用/禁用,例如,您可以在正在运行的系统中记录日志。