我有这个问题需要为我的一个项目解决。我需要为 3 种不同的服务创建一个日志文件(不要问为什么,我的老板是这样要求的)。每个服务都可以有多个线程尝试将信息记录到文件中,所以我的问题是,最好的方法是什么?
我应该使用全局互斥锁吗?像这样的东西:
procedure LogToFile(fn, str: string);
var
F: TextFile;
begin
logMutex.Acquire;
try
{$I+}
try
AssignFile(F, fn);
if FileExists(fn) then
Append(F)
else
Rewrite(F);
Writeln(F, DateTimeToStr(Now) + ': ' + str);
CloseFile(F);
except
end;
{$I-}
finally
logMutex.Release;
end;
end;
initialization
logMutex := SyncObjs.TMutex.Create(nil, False,'some_global_mutex');
finalization
logMutex.Free;
有更好的想法吗?
编辑:我是否应该构建另一个服务,一个记录器服务,等待需要从其他服务记录的消息,然后只有一个服务必须处理日志文件?如果这是一个很好的解决方案,那么在服务之间进行通信的最佳方式是什么?我可以用印地...