Chciałbym móc zadeklarować EventSource, który ma minimum kilka metod, które domyślnie zapewniają regularne funkcje logowania.Czy można podklasować EventSource w ETW?
np.
- informacji()
- Informuj()
- Błąd()
Ponadto chciałbym, aby móc w ciągu każdej usługi, określenie konkretnego źródła zdarzenia, który dziedziczy z klasa bazowa zapewniająca powyższe. W tej chwili aplikacja EventRegister.exe, która tworzy manifest, skarży się, że źródło zdarzenia musi zostać zapieczętowane.
Czy robię to źle? Jeśli tak, jak mogę to osiągnąć? Zobacz przykładowy kod:
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); }
}
Używam najnowsze i najlepsze Microsoft.Diagnostics.Tracing (pre) co rozumiem posiada wsparcie dla kanałów przeciwieństwie płyty z Enterprise Library.
Microsoft.Diagnostics.Tracing (pre) oczekuje, że klasa zostanie zapieczętowana. Klasa dziedzicząca EventSource musi zostać zapieczętowana, nie będzie można wygenerować manifestu, jeśli nie oznaczysz go jako zapieczętowanego. Wątpię, czy to zadziała. – KRP
Jak mogę udostępnić wspólne metody dla wielu źródeł zdarzeń w szerokim systemie? – jaffa
Nie jestem pewien na tym froncie, myślę, że nie możemy tego zrobić. – KRP