2012-11-06 22 views
10

Tôi đã cấu hình log4net với một RollingLogFileAppender và SmtpAppender, với ý định đăng mức DEBUG đến RollingLogFileAppender và Fatal chỉ đến SmtpAppender:Log4Net LevelEvaluator Ignored khi BUFFERSIZE lớn hơn 1 cho SmtpAppender

<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender"> 
    <to value="[email protected]" /> 
    <from value="[email protected]" /> 
    <subject value="Fatal Error" /> 
    <smtpHost value="smtp.test.com" /> 
    <SMTPPort value="366"/> 
    <Username value="[email protected]"/> 
    <Password value="password"/>  
    <bufferSize value="1" /> 
    <lossy value="true" /> 
    <evaluator type="log4net.Core.LevelEvaluator"> 
    <threshold value="FATAL"/> 
    </evaluator>  
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline"        /> 
    </layout> 
</appender> 

<root> 
    <level value="DEBUG" /> 
    <appender-ref ref="RollingLogFileAppender" /> 
    <appender-ref ref="SmtpAppender" /> 
</root> 

này hoạt động hoàn hảo cho đến khi tôi tăng bufferSize. Khi tôi làm điều này, tất cả các cấp được gửi qua email và log4net.Core.LevelEvaluator dường như bị bỏ qua. Tôi cũng đã thử bằng cách sử dụng LevelRangeFilter và LevelMatchFilter nhưng với những cấu hình tôi dường như không nhận được email nào cả.

Trả lời

10

Bộ đánh giá không bị bỏ qua, nhưng nó không làm những gì bạn mong đợi: Cài đặt của bạn hướng dẫn người cài đặt đặt tất cả các thông điệp tường trình vào bộ đệm và gửi email chỉ khi thông báo có mức FATAL được ghi lại. Nếu bộ đệm đầy thì các tin nhắn cũ nhất sẽ bị loại bỏ (đó là thiết lập mất dữ liệu; không có nó, bạn cũng sẽ nhận được email ngay khi bộ đệm đầy).

Nếu bạn muốn lọc thư thì bạn cần sử dụng bộ lọc. Ví dụ như thế này:

<filter type="log4net.Filter.LevelMatchFilter"> 
    <acceptOnMatch value="true" /> 
    <levelToMatch value="FATAL" /> 
</filter> 
<filter type="log4net.Filter.DenyAllFilter" /> 

Tôi không chắc chắn mặc dù nếu tôi sẽ xem xét appender mail của tôi như thế này kể từ khi tôi muốn nhận được thông báo ngay lập tức nếu ứng dụng của tôi có một vấn đề mà nó cần phải đăng nhập nó với mức độ gây tử vong.

+0

Cảm ơn Stefan, tôi không đánh giá cao rằng tôi đã không nhận được tất cả nhật ký cho đến khi FATAL được tạo. Bây giờ tôi hiểu nó, cấu hình đó thực sự hoạt động tốt cho tôi! Cảm ơn lần nữa vì sự đáp ứng. –

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