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