我正在
该进程无法访问文件“MyFile.log”,因为它正由另一个进程使用。
当我这样做时
File.SetAttributes(filename,FileAttributes.Normal)
using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
{
// Do stuff with log4net log
}
我已阅读其他帖子,但他们都建议我已经在做什么。还有其他建议吗?
感谢。
答案 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滚动文件追加器。