2013-05-17 28 views
12

Rất thường xuyên tôi muốn loại trừ đăng nhập từ một trình ghi nhật ký trò chuyện cụ thể lên đến một mức nhất định. Thật không may, là người đầu tiên của các quy tắc sau là cuối cùng cho tất cả các cấp logger rằng, để các quy tắc thứ hai (mà chỉ đơn giản là quy tắc mặc định của tôi) sẽ không đăng bất cứ điều gì từ nó:NLog và các quy tắc cuối cùng

<logger name="ChattyLogger" maxlevel="Warn" writeTo="blackhole" final="true" /> 

<logger name="*" minlevel="Info" writeTo="default" /> 

Một khả năng là sử dụng bộ lọc thay vào đó:

<logger name="ChattyLogger" writeTo="blackhole"> 
    <filters> 
    <when condition="level&lt;=LogLevel.Warn" action="IgnoreFinal" /> 
    </filters> 
</logger> 

<logger name="*" minlevel="Info" writeTo="default" /> 

Nhưng cú pháp là xấu, đặc biệt là độ dài và cần phải thoát khỏi biểu thức điều kiện.

Vì điều này có vẻ như một yêu cầu chung như vậy, tôi tự hỏi nếu tôi bỏ qua một cái gì đó.

Tôi đang sử dụng nlog dưới Silverlight, nhưng tôi cho rằng điều đó không quan trọng.

Trả lời

7

Hãy thử điều này:

<logger name="ChattyLogger" maxlevel="Warn"/> 
<logger name="ChattyLogger" minlevel="Error" final="true" writeTo="default"/> 
<logger name="*" minlevel="Info" writeTo="default" /> 
+0

Great câu trả lời, nhưng chắc chắn dòng đầu tiên không có gì, và có thể được gỡ bỏ? –