2014-10-05 26 views
0

我需要非常简单的文本文件记录。我只会追加线条。从不改变现有的或删除它们。如果它是XML文件,绑定到网格以查看它们会更容易。但文本文件和xml文件仍然存在问题,因为它们在文件系统中。在线程安全的aspnet中记录XML或文本文件

在web服务器中会附加日志条目时出现文件锁定。也可能在阅读时所以这个方法必须是线程安全的。同时,多个实例可以将日期写入文件。

我知道有一些第三方工具,如serilog等,但我想知道:

我怎么可以追加(不改变)线不用注意文件锁定到文本文件(或XML文件)?

如果我读取XML文件到数据集,添加一个新的行并保存为XML我会使用其他实例所做的其他条目。

如果我用streamwriter打开一个文本文件并向它附加一行,其他实例将会出现锁定错误。

我再次从管理面板获取日志列表,文件将被锁定,实例不会追加日志。

什么想法?

+0

*无关于文件锁*你不能。绝对不能。不。不可以。您可以做的是创建一个在后台运行的单个线程,该线程从集合中获取项目并将其写入磁盘,并以读/写方式锁定对该集合的访问。或者只是使用诸如NLog之类的多线程安全日志框架之一。 – Will 2014-10-05 16:30:23

回答

1

经过漫长的研究时间和实验后,我发现使用Nlog对我来说是最好的选择。最重要的是使用它的人非常高兴。我创建了一个小例子页面,每次调用它时都会写入一个日志并对其进行测试。我有一个多线程应用程序,一次又一次调用此示例页面。如果速度足够快,那么我看不到线程的计数数量。至今没有提出任何问题。

所以,我会坚持Nlog。

最好。