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)
请注意,这会对性能产生一些影响.
尽管@ Erwin的建议在大多数情况下都适用,但您应该重新考虑一个更好的架构是否有助于提高性能.
例如,Microsoft IIS服务器有许多工作进程在运行,每个进程都通过命名管道向IIS服务进程发送日志条目.并且只有IIS服务进程才有权写入日志文件.通过这种方式,工作进程不需要锁定日志文件,服务进程可以缓存条目并批量写入.
遵循IIS的方法并获得良好的性能非常容易.没有文件锁.
(更新:您现在可以使用LogMaster4Net,它实现了基于UDP的这种架构.)