簡體   English   中英

語義記錄IsEnabled si始終為false?

[英]Semantic Logging IsEnabled si always false?

我在進程外使用SLAB記錄ETW事件。

今天,在WcfTestClient.exe下托管的WCF服務中出現問題

當我在EventSource繼承類的WriteEvent方法中添加斷點時,IsEnabled()返回false! 因此,沒有任何事件寫入進程外控制台日志:(

啟動ConsoleEventSink時,我可以看到我的eventSource已注冊為LogAlways級別,而MatchAnyKeyword屬性為None

任何想法檢查此問題出了什么問題?

提前致謝

您的EventSource類中可能有一個錯誤。

您可以分析EventSource以查看其是否正確定義。 參見https://dzimchuk.net/post/troubleshooting-slab-out-of-process-logging

有一個Nuget軟件包: https ://www.nuget.org/packages/EnterpriseLibrary.SemanticLogging.EventSourceAnalyzer/

嘗試為其創建一個單元測試並檢查結果

[TestClass]
public class EventSourceTests
{
    [TestMethod]
    public void MyEventSourceShouldBeValid()
    {
        var analyzer = new EventSourceAnalyzer();

        analyzer.Inspect(MyEventSource.Log);
    }
}

編輯

.Net Core的(非官方)端口也可用,請參閱此軟件包

根據提供者guid,事件級別和事件關鍵字對EventSource和etw記錄器進行過濾。 我對consoleeventsink並不熟悉,但是只有在明確告知接收器要注意特定提供者的情況下,您才會獲得事件,通常是通過提供提供者的指導。 實際上,您的系統上運行着成千上萬個(也許成千上萬個)etw提供程序,您不僅可以按級別和關鍵字進行過濾-您還必須根據guid進行過濾。

一些etw消費者支持提供提供者名稱而不是guid,在這種情況下,他們通過散列名稱來生成guid。 這通常可以與EventSource很好地配合,因為這也是EventSource生成其指南的方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM