我们有一个由多个应用程序组成的大解决方案。其中一个应用程序定期运行(每10分钟一次),有时如果计算机繁忙,两个执行可能并行运行。 (问题不在于它是否是一个好主意。)
我们目前唯一的问题是,有时候,两个重叠的进程对同一个文件都有一个ILogger
,我们从log4net得到一个错误,表明它无法访问该文件(已经使用过的文件)通过另一个过程或类似的东西)。
以下是我们如何配置日志:
RollingFileAppender appender = new RollingFileAppender
{
Name = appenderName,
File = fileName,
AppendToFile = true,
MaxSizeRollBackups = 10,
MaximumFileSize = "10MB",
RollingStyle = RollingFileAppender.RollingMode.Size,
StaticLogFileName = false,
LockingModel = new FileAppender.MinimalLock(),
ImmediateFlush = true
};
处理此问题的最佳方法是什么?我们每次执行都不能有一个文件。
编辑
这是我得到的错误:
log4net:ERROR [RollingFileAppender] Unable to acquire lock on file XXXX. The process cannot acces the file because it is being used by another process.
答案 0 :(得分:0)
如果有多个文件写入同一文件,则可以使用FileAppender.InterProcessLock模型。这将基于互斥锁来锁定和解锁文件,而不是尝试以最小的锁定时间来修复它。