Я хотел бы иметь возможность объявить EventSource, который имеет как минимум несколько методов, которые по умолчанию предоставляют регулярные средства ведения журнала.Возможно ли подкласс EventSource в ETW?
например.
- Info()
- Предупреждать()
- Error()
Кроме того, я хотел бы иметь возможность в рамках каждой службы, определить конкретный источник событий, который унаследован от базовый класс, обеспечивающий вышеуказанное. В настоящее время приложение 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 (предварительно), который я понимаю, имеет поддержку каналов в отличие от сляба из Enterprise Library.
Microsoft.Diagnostics.Tracing (pre) ожидает, что класс будет запечатан. Класс, наследующий EventSource, должен быть запечатан, вы не сможете генерировать манифест, если вы не отметили его как запечатанное. Я сомневаюсь, что это сработает. – KRP
Как я могу поделиться общими методами в нескольких EventSources через широкую систему? – jaffa
Я не уверен на этом фронте, думаю, мы не сможем этого сделать. – KRP