0

我创建了一个项目。很多人会同时使用我的项目。如果有人出错,那么它将通过使用内存流创建对象来写入文件。如果每个人都遇到错误,那么将创建该数量的对象,并且所有对象一次将错误写入同一个文件。这有什么问题和性能问题吗?

4

4 回答 4

6
  1. 使用内存流写入文件似乎没有必要。打开/创建文件并直接写入文件。更好的是:使用诸如 log4net 之类的日志库,它将负责同时访问日志文件。记录是一项标准任务,无需重新发明轮子。
  2. 如果您担心性能,请进行负载测试,看看是否真的存在问题。
于 2010-10-05T07:56:14.967 回答
1

内存流只是字节数组周围的 Stream 接口。

所以这实际上非常快。

但是整个字节数组都保存在内存中,因此您可能遇到的性能问题是由于内存分配过多。

是否真的会有问题取决于“多少人”有多大,以及内存流中的数据量。

如果您使用“许多人”写入同一个文件,请注意锁定问题。

于 2010-10-05T07:56:45.100 回答
1

想到文件锁定/争用。您不能创建一个日志目录并让所有日志写入都创建自己的文件吗?或者,使用 .NET 跟踪功能或类似 log4net、Common.Logging、dotTrace 作为日志框架来为您消除这些问题。

于 2010-10-05T07:56:57.677 回答
0

在访问日志文件时使流共享并在其周围使用锁。记得在退出时关闭流。

static Object _locker = new Object;
static FileStream fs = new FileStream(...);

// your code
lock(_locker)
{
   fs.Write(...) // write to stream
}
于 2010-10-05T09:02:16.543 回答