2012-09-10 29 views
9

Tôi đang cố định cấu hình log4net lần đầu tiên, tôi chắc chắn rằng tôi đã định cấu hình mọi thứ đúng cách, tuy nhiên, sau khi nhận được tệp nhật ký trống, tôi đã bật trình gỡ lỗi log4net. Bây giờ tôi liên tục nhìn thấy những lỗi sau:log4net GenericFailure. Không thể lấy khóa trên hồ sơ

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. 

Tôi hiện đã log4net cấu hình thông qua file Web.config của tôi thusly:

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

Trợ giúp !!!

+0

1) Phiên bản của log4net? 2) Điều này có xảy ra khi nhiều phiên bản của cùng một ứng dụng được khởi chạy không? – sll

Trả lời

2

Dự đoán của tôi là bạn có nhiều bản sao của ứng dụng trên các hội đồng khác nhau đang cố gắng truy cập đường dẫn này, vì vậy tất cả chúng đều cố gắng giữ lại tệp nhật ký thích hợp cùng một lúc. Tuy nhiên, để chắc chắn, tôi khuyên bạn nên sử dụng Unlocker để đảm bảo tệp của bạn không bị giữ bởi một thứ khác mà bạn không mong đợi. Nếu bạn đang có nhiều trường hợp của appender này cố gắng để mở cùng một tập tin, vấn đề của bạn sẽ được rằng bạn không sử dụng appender một cách chính xác; nếu appender đang được sử dụng trên toàn bộ hội đồng thì hai invocations của nó sẽ không chơi độc đáo với nhau, dẫn đến một lỗi đã sử dụng như thế này. Nếu đúng như vậy, việc tái cấu trúc có thể là lựa chọn duy nhất của bạn.

+0

Giải quyết vấn đề này. Nó có vẻ như mỗi vấn đề tôi giải quyết với log4net tạo ra một mặc dù ... – Homer2029

+1

Bạn có cơ bản nói rằng log4net không phải là thread-safe? –

5

Tôi cũng đã nhận lỗi này bởi vì tôi đã chỉ định tên của một thư mục như trái ngược với một tập tin trong appender, thông báo lỗi là khó hiểu:

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/> 
     <file value="C:\DirectoryNameHere\MyBad" /> 
+0

Tôi không biết tại sao nó hoạt động, nhưng nó đã làm được. Cảm ơn. –

0

Tôi có vấn đề này khi tôi đã cố gắng để viết logfile trong một thư mục con (giống như @PeteN). Khi sử dụng cú pháp chính xác này doens't xảy ra nữa, trong de set appender config:

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

hy vọng điều này giúp

+0

Tôi đã thử điều này ngay bây giờ và tôi không thấy bất kỳ sự khác biệt nào. –

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