Я хотел бы иметь возможность объявить EventSource, который имеет как минимум несколько методов, которые по умолчанию предоставляют обычные средства ведения журнала.
e.g.
- Информация()
- Предупреждать()
- Ошибка()
Кроме того, я хотел бы иметь возможность в каждой службе определить конкретный источник событий, который наследуется от базового класса, обеспечивающего вышеуказанное. На данный момент приложение EventRegister.exe, которое создает манифест, жалуется, что источник события должен быть запечатан.
Я делаю это неправильно? Если да, то как я могу достичь вышеизложенного? См. пример кода:
public class ETWBase : EventSource
{
[Event(1, Channel = EventChannel.Admin, Message = "Info Message: {0}")]
public void Info(string message) { this.WriteEvent(1); }
[Event(2, Channel = EventChannel.Debug, Message = "Debug Message: {0}")]
public void Trace(string message) { this.WriteEvent(2); }
}
[EventSource(Name = "ABC-MyEtwServiceEventSource")]
public sealed class MyEtwServiceEventSource : ETWBase
{
public static MyEtwServiceEventSource Log = new MyEtwServiceEventSource();
[Event(3, Channel = EventChannel.Debug, Message = "My specific Message: {0}")]
public void Trace(string message) { this.WriteEvent(3); }
}
Я использую последнюю и лучшую версию Microsoft.Diagnostics.Tracing (pre), которая, как я понимаю, поддерживает каналы, в отличие от SLAB из Enterprise Library.