log4net GenericFailure.无法获取锁定文件

Hom*_*029 10 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" because 
it is being used by another process.
Run Code Online (Sandbox Code Playgroud)

我目前通过我的Web.config文件配置了log4net:

<log4net debug="true">
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
  <file value="Logs\\TransferPicturesApplicationLog.txt"/>
  <appendToFile value="true"/>
  <rollingStyle value="Size"/>
  <maxSizeRollBackups value="5"/>
  <maximumFileSize value="10MB"/>
  <staticLogFileName value="true"/>
  <filter type="log4net.Filter.LevelRangeFilter">
    <param name="LevelMin" value="ERROR"/>
    <param name="LevelMax" value="DEBUG"/>
  </filter>
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %level %logger - %message%newline"/>
  </layout>
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
</appender>
<root>
  <level value="INFO"/>
  <appender-ref ref="RollingFileAppender"/>
</root>
<logger>
  <level value="DEBUG"/>
  <appender-ref ref="RollingFileAppender"/>
</logger>
</log4net>
Run Code Online (Sandbox Code Playgroud)

救命!!!

Pet*_*teN 7

我也有这个错误,因为我指定了目录的名称而不是appender中的文件,错误消息是神秘的:

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
      <file value="C:\DirectoryNameHere\MyBad" />
Run Code Online (Sandbox Code Playgroud)


tme*_*ser 3

我的猜测是,您在不同的程序集中有多个附加程序副本试图访问此路径,因此它们都尝试同时获取适当的日志文件。不过,可以肯定的是,我建议您使用Unlocker来确保您的文件不会被其他您不期望的东西保存。如果您有此附加程序的多个实例尝试打开同一个文件,则问题可能是您没有正确使用附加程序;如果跨程序集使用附加器,那么它的两次调用将无法很好地配合,从而导致像这样的已在使用错误。如果是这种情况,重构可能是您唯一的选择。