2013-09-25 25 views
7

Tôi muốn có thể tuyên bố một EventSource có tối thiểu một số phương pháp theo mặc định cung cấp các phương tiện ghi nhật ký thông thường.Có thể phân lớp một EventSource trong ETW không?

ví dụ:

  • Thông tin()
  • Cảnh báo()
  • Lỗi()

Bên cạnh đó tôi muốn để có thể trong mỗi dịch vụ, xác định một nguồn sự kiện cụ thể được thừa kế từ lớp cơ sở cung cấp ở trên. Hiện tại ứng dụng EventRegister.exe tạo tệp kê khai than phiền rằng nguồn sự kiện phải được niêm phong.

Tôi có làm điều này sai không? Nếu vậy làm thế nào tôi có thể đạt được những điều trên? Xem mã ví dụ:

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); }  
    } 

Tôi đang sử dụng Microsoft.Diagnostics.Tracing mới nhất và lớn (pre) mà tôi hiểu có hỗ trợ cho các kênh không giống như các tấm từ doanh nghiệp Thư viện.

+1

Microsoft.Diagnostics.Tracing (trước) dự kiến ​​lớp sẽ được niêm phong. Lớp EventSource kế thừa cần được niêm phong, bạn sẽ không thể tạo ra tệp kê khai, nếu bạn không đánh dấu nó là bị niêm phong. Tôi nghi ngờ liệu điều này có hiệu quả không. – KRP

+0

Tôi làm cách nào để chia sẻ các phương thức phổ biến trên nhiều Nguồn sự kiện trên một hệ thống rộng? – jaffa

+0

Tôi không thực sự chắc chắn về điều đó, tôi nghĩ chúng tôi không thể làm điều đó. – KRP

Trả lời

3

ETWBase phải trừu tượng và không được phương pháp trang trí bởi EventAttribute.

Bạn có thể tìm thêm thông tin trong tệp tài liệu _EventSourceUsersGuide.docx đang được thêm vào dự án của bạn nếu bạn đang tham chiếu Event Source hoặc Event Source Samples gói nuget.

Các vấn đề liên quan