2013-09-25 3 views
7

Я хотел бы иметь возможность объявить 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.

+1

Microsoft.Diagnostics.Tracing (pre) ожидает, что класс будет запечатан. Класс, наследующий EventSource, должен быть запечатан, вы не сможете генерировать манифест, если вы не отметили его как запечатанное. Я сомневаюсь, что это сработает. – KRP

+0

Как я могу поделиться общими методами в нескольких EventSources через широкую систему? – jaffa

+0

Я не уверен на этом фронте, думаю, мы не сможем этого сделать. – KRP

ответ

3

ETWBase должен быть абстрактным и не должен иметь методы, украшенные EventAttribute.

Дополнительную информацию вы можете найти в файле документации _EventSourceUsersGuide.docx, который добавляется в ваш проект, если вы ссылаетесь на Event Source или Event Source Samples пакеты nuget.

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