12

是否可以将 5 个不同的进程写入同一个日志文件?

我正在使用 Log4Net 进行日志记录,但似乎只有 1 个进程正在写入文件,当我关闭该进程时,第二个进程正在写入。

我要大家一起写。

如何?

4

2 回答 2

19

如果要从多个进程写入单个文件,请将MinimalLockas添加LockinModel到您的<appender>节点:

<appender .... >
  ......
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
  ......
</appender>

注意这对性能有一些影响。

于 2012-10-06T20:13:04.163 回答
5

尽管@Erwin 的建议在大多数情况下都有效,但您应该重新考虑更好的架构是否有助于提高性能。

例如,Microsoft IIS 服务器运行着许多工作进程,每个工作进程都通过命名管道将日志条目发送到 IIS 服务进程。并且只有 IIS 服务进程才有权写入日志文件。这样,工作进程就不需要锁定日志文件,服务进程可以缓存条目并批量写入。

遵循 IIS 的方法并获得良好的性能非常容易。没有文件锁。

(更新:您现在可以使用LogMaster4Net,它实现了基于 UDP 的这种架构。)

于 2012-10-07T01:48:48.257 回答