Log4Net如何从多个进程中写入文件

12

5个不同的进程能否同时向同一个日志文件中写入内容?

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

我想要同时写入所有进程的内容。

怎么做?

2个回答

19

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

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

警惕这会对性能产生一些影响。


5
尽管@Erwin的建议在大多数情况下都有效,但如果更好的架构可以帮助提高性能,您应该重新考虑。
例如,Microsoft IIS服务器有许多工作进程在运行,每个进程通过命名管道将日志条目发送到IIS服务进程。只有IIS服务进程有权写入日志文件。通过这种方式,工作进程无需锁定日志文件,服务进程可以缓存条目并批量写入它们。遵循IIS的方法非常容易,并且可以实现良好的性能而无需文件锁定。
(更新:您现在可以使用LogMaster4Net,它基于UDP实现了这种架构。)

在LogMaster4Net中,请注意UDP不能保证消息的传递。 - alital

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接