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 name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
      <file value="C:\DirectoryNameHere\MyBad" />
于 2013-06-21T15:10:36.970 に答える
3

私の推測では、このパスにアクセスしようとしているさまざまなアセンブリにアペンダーの複数のコピーがあるため、それらはすべて同時に適切なログ ファイルを取得しようとします。ただし、確かに、Unlockerを使用して、予期しない他の何かによってファイルが保持されていないことを確認することをお勧めします。このアペンダーの複数のインスタンスが同じファイルを開こうとしている場合、問題はアペンダーを正しく使用していないことです。アペンダーがアセンブリ間で使用されている場合、その 2 つの呼び出しは互いにうまく機能せず、このような既に使用中のエラーにつながります。この場合、おそらくリファクタリングが唯一の選択肢です。

于 2012-09-10T14:46:27.643 に答える