Log4Net从许多进程写入文件

m0f*_*0fo 12 c# log4net thread-safety

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

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

我希望大家一起写.

如何?

Erw*_*win 19

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

<appender .... >
  ......
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
  ......
</appender>
Run Code Online (Sandbox Code Playgroud)

请注意,这会对性能产生一些影响.


Lex*_* Li 5

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

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

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

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