.Net: Как подавить заголовок TraceSource («SourceName TraceEventType: Id: ”)?

У меня есть объект TraceSource, который я использую для регистрации инициализации приложения VB.Net. К нему прикреплено несколько TraceListener:

  • ConsoleTraceListener
  • TextWriterTraceListener
  • EventLogTraceListener

Для первых двух я хочу, чтобы вывод записи был «сырым», то есть без стандартного заголовка:

SourceName TraceEventType: Id:

Я реализовал оболочку, которая делает это, когда TraceEventType имеет значение Verbose:

If _buffer.EventType = TraceEventType.Verbose Then
    For Each listener As TraceListener In _traceSource.Listeners
        listener.Write(_buffer.Text)
    Next
Else
    _traceSource.TraceEvent(_buffer.EventType, id, _buffer.Text)
End If

Я мог бы сделать это для всей трассировки, но тогда все записи в EventLog будут перечислены с Уровень = Информация. Итак, я хочу иметь возможность указать серьезность сообщения трассировки, но я не могу найти в TraceSource или TraceListeners какой-либо метод, который позволяет мне это сделать. Насколько я могу судить, TraceListener имеет следующие варианты записи в него: Этот метод не предназначен для непосредственного вызова кодом приложения, а предназначен для записи данных трассировки в выходные данные членами классов Debug, Trace и TraceSource.

.. так что я не уверен, что это хорошо?

Edit:

Я только что понял, что если я сделаю что-то вроде моего последнего примера здесь, мне вообще не понадобится TraceSource, так как он все равно обходится. Но это также означает, что я должен реализовать свои собственные механизмы фильтрации и переключения (но, возможно, это приемлемая цена, чтобы заставить его работать так, как я хочу).

8
задан d7samurai 31 October 2010 в 15:31
поделиться