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.
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
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
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