13

我第一次尝试配置 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:

<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>

帮助!!!

4

3 回答 3

7

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

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
      <file value="C:\DirectoryNameHere\MyBad" />
于 2013-06-21T15:10:36.970 回答
3

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

于 2012-09-10T14:46:27.643 回答
0

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

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

希望这可以帮助

于 2014-02-26T09:54:37.443 回答