是否可以从5个不同的进程写入同一个日志文件?
我正在使用Log4Net进行日志记录,但似乎只有一个进程正在写入该文件,当我关闭此进程时,第二个进程正在编写。
我希望所有人一起写作。
如何?
答案 0 :(得分:17)
如果要从多个进程写入单个文件,请将MinimalLock
添加为LockinModel
到<appender>
节点:
<appender .... >
......
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
......
</appender>
请注意这会对性能产生一些影响。
答案 1 :(得分:5)
尽管@ Erwin的建议在大多数情况下都适用,但您应该重新考虑一个更好的架构是否有助于提高性能。
例如,Microsoft IIS服务器有许多工作进程在运行,每个进程都通过命名管道向IIS服务进程发送日志条目。并且只有IIS服务进程才有权写入日志文件。通过这种方式,工作进程不需要锁定日志文件,服务进程可以缓存条目并批量写入。
遵循IIS的方法并获得良好的性能非常容易。没有文件锁。
(更新:您现在可以使用LogMaster4Net,它实现了基于UDP的架构。)