Làm cách nào để xác định một TraceListener mặc định, được tự động thêm vào tất cả các TraceSources, trong một dự án net 4.0 C#?Thêm một TraceListener mặc định cho tất cả các TraceSources trong App.config
Hiện nay tôi phải liệt kê mọi TraceSource tên tôi sử dụng trong file App.config như thế này:
<system.diagnostics>
<sharedListeners>
<add name="MyListener" type="MyListenerType,MyAssemblyName" />
</sharedListeners>
<sources>
<source name="Class1" switchValue="All">
<listeners><add name="MyListener"></add></listeners>
</source>
<source name="Class2" switchValue="All">
<listeners><add name="MyListener"></add></listeners>
</source>
<source name="Class3" switchValue="All">
<listeners><add name="MyListener"></add></listeners>
</source>
... repeat for a gazillion classes ...
</sources>
<system.diagnostics>
Tôi đang sử dụng một SharedListener rằng sẽ nhận được tất cả các kết quả đầu ra từ tất cả các TraceSources, trừ trường hợp quy định. Với cú pháp trên, điều này đòi hỏi một mục nhập thủ công cho mỗi TraceSource.
Bất cứ khi nào tôi giới thiệu một lớp học mới với một TraceSource mới, tôi phải cập nhật App.Config. Nếu nhiều chương trình sử dụng assembly đó, tôi phải cập nhật nhiều App.Config. Lỗi chính tả trong khi cập nhật các mục nhập này sẽ không tạo ra bất kỳ lỗi nào, nó sẽ chỉ lặng lẽ bỏ qua tất cả các đầu ra theo dõi từ nguồn chính xác.
Có cách nào tôi có thể đặt TraceListener mặc định thông qua App.config, để tôi chỉ phải đặt tên cho TraceSources cụ thể nếu tôi muốn đi chệch khỏi mặc định?
I * do * đã chia sẻ Người nghe. Trình nghe 'MyListener' trong ví dụ của tôi là một người nghe được chia sẻ, nếu không tôi không thể tham chiếu đến nó bằng tên khi thêm nó. (Tôi sẽ cố gắng làm điều này rõ ràng hơn trong câu hỏi). Nhưng với cấu hình hiện tại, tôi vẫn cần phải thêm người nghe được chia sẻ này vào * mọi TraceSource * đơn lẻ. Tôi đang tìm kiếm một cách để tránh lặp lại mọi tên TraceSource trong App.Config, trong khi mạo hiểm mất tích hoặc lỗi chính tả. – HugoRune
Xin lỗi. Sau đó, bạn cần phải sửa đổi machine.config, hoặc làm điều đó trong mã khi khởi động ứng dụng, nhưng điều đó đòi hỏi sự phản chiếu để lấy danh sách riêng của các nguồn theo dõi để thêm người nghe vào tất cả chúng. – MatthewMartin