2012-04-18 11 views
10

Tôi đã có cài đặt này cho log4net trong log4net.config cho phép nhiều chủ đề để viết với cùng file:log4net + nhiều luồng + lăn appender tập tin

<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <!-- Minimal locking to allow multiple threads to write to the same file --> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/> 
    <file value="log\UI.log"/> 
    <appendToFile value="true"/> 
    <rollingStyle value="Date"/> 
    <maxSizeRollBackups value="30"/> 
    <datePattern value="-yyyyMMdd"/> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%newline%date [%thread] %-5level [%property{identity}] %logger{3} - %message%newline"/> 
    </layout> 
</appender> 

Nhưng sau nửa đêm mới tạo log file đang được ghi đè tất cả thời gian và do đó chỉ có một sự kiện cuối cùng trong tệp. Sau khi khởi động lại máy chủ, tất cả sẽ trở lại ngay cho đến nửa đêm tiếp theo.
Vì vậy, bất cứ ai có thể nói đây là một vấn đề cấu hình hay đây chỉ là một vấn đề log4net?

+0

bất kỳ giải pháp nào để cho phép mọi chuỗi ghi trên các tệp khác nhau (tức là mỗi chuỗi có tệp riêng của nó)? –

Trả lời

10

Sự cố đã được giải quyết bằng cách xóa khóa mô hình khóa vì tôi chỉ có một quy trình (IIS, w3wp.exe) sử dụng cùng một trình ghi nhật ký.

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

Kể từ khi người ta nói here:

Nếu bạn sử dụng RollingFileAppender mọi thứ trở nên tồi tệ hơn thậm chí như một số quá trình có thể cố gắng để bắt đầu lăn các log file đồng thời. RollingFileAppender hoàn toàn bỏ qua các mô hình khóa khi cán các tập tin, cán tập tin chỉ đơn giản là không tương thích với kịch bản này.

Tôi nghĩ bạn sẽ nhận được kết quả không thể đoán trước.

0

Tôi đoán là việc bạn sử dụng dấu - trên datePattern gây nhầm lẫn cho khung công tác để sau lần cuộn đầu tiên bất kỳ nhật ký nào kích hoạt sự kiện cuộn.

gì xảy ra khi bạn cố gắng này với

<datePattern value="yyyyMMdd" /> 

mỗi ví dụ here.

Để thay đổi khoảng thời gian cán điều chỉnh giá trị DatePattern. Ví dụ: , mẫu ngày "yyyyMMdd" sẽ cuộn mỗi ngày. Xem System.Globalization.DateTimeFormatInfo để biết danh sách các mẫu có sẵn .