2012-01-03 30 views
8

Tôi nhậnProcess không thể truy cập các tập tin "MyFile.log" bởi vì nó đang được sử dụng bởi một quá trình

Quá trình này không thể truy cập các tập tin "MyFile.log" bởi vì nó đang được sử dụng bởi quá trình khác.

trong khi tôi đang làm điều này

File.SetAttributes(filename,FileAttributes.Normal) 

using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)) 
{ 
    // Do stuff with log4net log 
} 

Tôi đã đọc bài viết khác, nhưng tất cả họ đều cho thấy những gì tôi đang làm đã. Bất cứ một đề nghị nào khác?

Cảm ơn.

+0

Có lẽ Visual Studio đang khóa tệp. Hãy thử khởi động lại nó. –

Trả lời

33

Cố gắng cấu hình log4net với một khóa tối thiểu:

<appender name="FileAppender" type="log4net.Appender.FileAppender"> 
    ... 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
    ... 
</appender> 

have a look here for better explanation.

Ngoài ra, cố gắng mở tập tin đăng nhập với:

 using (var stream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Delete | FileShare.ReadWrite)) 
    {... 
} 

hoặc kiểm tra dự án này: Tailf Trong bất kỳ trường hợp nào, hãy xóa phần SetAttributes() không thể hoạt động. Tailf Mô tả dự án Tailf là triển khai C# của lệnh tail -f có sẵn trên hệ thống unix/linux. Khác với các cổng khác, nó không khóa tập tin theo bất kỳ cách nào để nó hoạt động ngay cả khi đổi tên tập tin khác: đây là thiết kế đặc biệt để hoạt động tốt với bộ nạp file log4net.

+0

Không thể định cấu hình/chạm vào cấu hình tại chỗ. Bất kỳ ý tưởng nào nữa.biết đọc liên kết của bạn – user9969

+0

@ user231465 kiểm tra câu trả lời được cải thiện –

+0

Không thể tải xuống ngay bây giờ tại nơi làm việc nhưng bạn có thể đọc tệp bằng cách nào đó không? Tôi đã tự hỏi làm thế nào để đọc nhật ký thương mại xử lý khóa mmm ...... – user9969

Các vấn đề liên quan