小编avr*_*ron的帖子

在多个服务之间共享一个日志文件(每个服务有多个线程),如何?

我有一个问题,我需要为我的一个项目解决.我需要为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;
Run Code Online (Sandbox Code Playgroud)

有更好的想法吗?

编辑:我应该构建另一个服务,一个记录器服务,等待需要从其他服务记录的消息,然后只有一个服务必须处理日志文件?如果这是一个很好的解决方案,那么在服务之间进行通信的最佳方式是什么?我可以用Indy ......

delphi logging multithreading

9
推荐指数
1
解决办法
294
查看次数

标签 统计

delphi ×1

logging ×1

multithreading ×1