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

use*_*969 11 .net c# 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
}
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

Fel*_*ano 44

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

<appender name="FileAppender" type="log4net.Appender.FileAppender">
    ...
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
   ...
</appender>
Run Code Online (Sandbox Code Playgroud)

看看这里有更好的解释.

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

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

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