2012-10-06 36 views
10

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

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

我想大家一起写。

如何?

回答

15

如果你想要写从多个进程的单个文件中添加MinimalLock作为LockinModel<appender>节点:

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

当心这会对性能产生一定的影响。

5

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

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

这是很容易遵循IIS的方法,并取得良好的表现。没有文件锁。

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