进程无法访问文件“MyFile.log”,因为它正由另一个进程使用

时间:2012-01-03 09:24:48

标签: c# .net log4net

我正在

  

该进程无法访问文件“MyFile.log”,因为它正由另一个进程使用。

当我这样做时

File.SetAttributes(filename,FileAttributes.Normal)

using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
{
    // Do stuff with log4net log
}

我已阅读其他帖子,但他们都建议我已经在做什么。还有其他建议吗?

感谢。

1 个答案:

答案 0 :(得分:42)

尝试使用最小锁定配置log4net:

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

have a look here for better explanation.

或者,尝试使用以下命令打开日志文件:

     using (var stream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Delete | FileShare.ReadWrite))
    {...
}

或检查此项目:Tailf 在任何情况下,删除无法工作的SetAttributes()部分。 Tailf项目描述 Tailf是unix / linux系统上可用的tail -f命令的C#实现。不同地形成其他端口它不会以任何方式锁定文件,因此即使其他文件重命名该文件也能正常工作:这特别适用于log4net滚动文件追加器。