2015-08-24 2 views
1

Я работаю над проектом, который использует пользовательский прослушиватель трассировки:Trace Listeners - Как подавить сообщения журнала из заданного пространства имен?

<system.diagnostics> 
<trace> 
    <listeners> 
    <add name="CustomTraceListener" type="CustomTraceListener, CustomTraceListener" /> 
    </listeners> 
</trace> 
</system.diagnostics> 

И у меня есть класс, который регистрирует слишком много:

namespace MyApp.SuperChatty{ 
    //I log too much 
    public class HeavyLogger{ 
    } 
} 

Как я могу подавить Verbose сообщения от MyApp.SuperChatty.HeavyLogger?

Когда я использовал log4net, я мог бы создать конкретный регистратор для данного класса или пространства имен (log4net: Configure to ignore messages from a specific class), так как я могу это сделать с помощью трассировки?

ответ

2

Лучшее решение, о котором я могу думать, это создать пользовательскую форму TraceFilter (TraceFilter at MSDN). Я никогда не делал этого сам, но я ожидал бы, что вы могли бы предоставить пространство имен/частичное пространство имен до InitializeData, а затем определить, следует ли трассировать от источника в методе ShouldTrace.

+0

Так что это невозможно только через конфигурацию? –

+0

Ну, вы должны реализовать класс, а затем настроить его в конфиге. (Но, как я уже сказал, я на самом деле не сделал этого сам, поэтому мой ответ только теоретический.) –

Смежные вопросы