2012-01-03 4 views
8

によって使用されているので、私はそれが別のプロセスによって使用されているためプロセスは、それが別のプロセス

プロセスがファイル「MyFile.log」にアクセスすることはできません取得しています「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

おそらく、Visual Studioがファイルをロックしています。再起動してください。 –

答えて

33

最小限のロックで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 Inをいずれの場合も、動作できないSetAttributes()部分を削除します。 Tailfプロジェクトの説明 Tailfは、unix/linuxシステムで利用可能なtail -fコマンドのC#実装です。別のポートを形成する方法とは異なり、ファイルをロックしないので、ファイルの名前を変更しても機能します。これは、log4netローリングファイルアペンダでうまく動作するように設計されています。

+0

設定を構成/タッチできません。これ以上アイデア。あなたのリンクを読むことについて – user9969

+0

@ user231465改善された返信を確認してください –

+0

仕事中は今はダウンロードできませんが、何とかファイルを読むことができますか?ファイルのコピーを作ることを考えていました。市販のログリーダーがロックをどのように扱っているのだろうか...... – user9969

関連する問題