2012-07-28 24 views
5

Tôi đang cố gắng cấu hình một log4net SmtpAppender để tôi chỉ nhận được một e-mail nếu một mức nhật ký nhất định bị trúng, nhưng với 10 dòng cuối cùng từ tất cả các mức được bao gồm. Đây là cấu hình của tôi:Làm thế nào để cấu hình một log4net SmtpAppender để chỉ gửi cho tôi e-mail khi một cấp độ nhất định được nhấn?

<appender name="EmailAppender" type="SmtpSubjectLayoutAppender"> 

    <evaluator type="log4net.Core.LevelEvaluator"> 
    <threshold value="WARN"/> 
    </evaluator> 

    <bufferSize value="10" /> 
    <lossy value="false" /> 

    ... 
</appender> 

Tôi đang thực hiện nó với mã này:

for (var i = 1; i <= 30; i++) 
{ 
    logger.Info("This is just a test message " + i); 
} 

logger.Error("Error message"); 

Vấn đề là tôi kết thúc nhận được 3 e-mail, 2 với tất cả các INFO khai thác gỗ và một trong đó có vài dòng cuối cùng đã xảy ra trước khi ERROR:

[2012-07-27 18:59:55.657][INFO ][Chase][tid=14972] This is just a test message 23 
[2012-07-27 18:59:55.659][INFO ][Chase][tid=14972] This is just a test message 24 
[2012-07-27 18:59:55.661][INFO ][Chase][tid=14972] This is just a test message 25 
[2012-07-27 18:59:55.662][INFO ][Chase][tid=14972] This is just a test message 26 
[2012-07-27 18:59:55.664][INFO ][Chase][tid=14972] This is just a test message 27 
[2012-07-27 18:59:55.666][INFO ][Chase][tid=14972] This is just a test message 28 
[2012-07-27 18:59:55.667][INFO ][Chase][tid=14972] This is just a test message 29 
[2012-07-27 18:59:55.670][INFO ][Chase][tid=14972] This is just a test message 30 
[2012-07-27 18:59:55.671][ERROR][Chase][tid=14972] Error message 

làm thế nào để cấu hình appender vì vậy mà tôi nhận được một e-mail với 10 dòng cuối cùng nếu WARN hoặc cao hơn xảy ra, b ut bỏ qua bộ đệm khác?

+0

hãy xem bài đăng này để có câu trả lời chính xác: http://stackoverflow.com/questions/13254495/log4net-levelevaluator-ignored-when-buffersize-greater-than-1-for-smtpappender –

Trả lời

4

Bạn cần phải thiết lập giá trị tổn hao là true:

<lossy value="true" /> 

Trong cấu hình của bạn log4net viết bộ đệm không chỉ khi một lỗi được đăng nhập mà còn khi bộ đệm đầy. Cờ mất mát yêu cầu log4net loại bỏ các thông điệp nếu cần thiết.

+0

Tôi tin rằng điều khiển số lượng dòng trở lại ứng dụng bị mất –

2

Sử dụng

<threshold value="WARN"/> 

Các

<evaluator type="log4net.Core.LevelEvaluator"> 
    <threshold value="WARN"/> 
</evaluator> 

dường như không làm việc (log4net phiên bản 1.2.13.0) nữa ...

Sử dụng

<lossy value="true" /> 

là không tốt khi người ta muốn nhận được sự lộn xộn lứa tuổi.

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