C# log4net GenericFailure。无法获取对文件的锁定

C# log4net GenericFailure。无法获取对文件的锁定,c#,log4net,config,C#,Log4net,Config,我第一次尝试配置log4net,我确信我已经正确配置了所有内容,但是,在获得空日志文件后,我打开了log4net调试器。我现在不断看到以下错误: log4net:ERROR [RollingFileAppender] ErrorCode: GenericFailure. Unable to acquire lock on file "file path\file name" The process cannot access the file "file path\file name" bec

我第一次尝试配置log4net,我确信我已经正确配置了所有内容,但是,在获得空日志文件后,我打开了log4net调试器。我现在不断看到以下错误:

log4net:ERROR [RollingFileAppender] ErrorCode: GenericFailure. Unable to acquire lock on 
file "file path\file name" The process cannot access the file "file path\file name" because 
it is being used by another process.
我目前通过Web.config文件配置了log4net,因此:



救命啊

我的猜测是,您在不同的程序集中有多个appender副本试图访问此路径,因此它们都试图同时获取相应的日志文件。但是,可以肯定的是,我建议您使用以确保您的文件不会被您不希望的其他东西持有。如果有多个此appender实例试图打开同一文件,则问题在于您没有正确使用appender;如果appender正在跨程序集使用,那么对它的两个调用将不能很好地相互配合,从而导致这样一个已经在使用的错误。如果是这种情况,重构可能是您唯一的选择。

我也遇到了这个错误,因为我在appender中指定了目录名而不是文件名,错误消息很神秘:


我在试图将日志文件写入子目录(与@PeteN相同)时遇到了这个问题。当使用正确的语法时,在de appender配置集中不再出现这种情况:

<appender name="TestLogAppender" type="log4net.Appender.RollingFileAppender">
  <file type="log4net.Util.PatternString" value=".\logDirectory\LogFileName.csv" />
  <....>


希望这对log4net版本有所帮助?2) 当启动同一应用程序的多个实例时会发生这种情况吗?解决了此问题。似乎我用log4net解决的每个问题都会产生另一个问题……log4net是线程安全的,但是两个不同的进程不能登录到同一个文件。我刚才尝试了这个方法,但没有发现任何区别。@GrantBirchmeier可能是因为您使用了
lockingModel
属性。我将它添加到我的
log4net.config
文件中,然后锁定错误消失了。